質問: centos 7は、「yum install」操作中にメモリを割り当てることができません yum install php56w-mcryptを試してみると、システムからこのエラーが表示されましたlibmcrypt-2.5.8-13.el7.x86_64: [errno 5] [errno 12] cannot allocate memory php56w-mcrypt-5.6.5-1.w7.x86_64: [errno 5] [errno 12] cannot allocate memory free -mをチェックしました total used free shared buffers cached mem: 490 421 68 8 3 42 -/+ buffers/cache: 376 113 swap: 0 0 0 top pid user pr ni virt res shr s %cpu %mem time+ command 9756 mysql 20 0 727588 81556 0 s 0.3 16.2 1:04.61 mysqld 11089 root 20 0 0 0 0 s 0.3 0.0 0:16.25 kworker/0:2 1 root 20 0 129396 2020 576 s 0.0 0.4 0:05.88 systemd 2 root 20 0 0 0 0 s 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 s 0.0 0.0 0:00.16 ksoftirqd/0 5 root 0 -20 0 0 0 s 0.0 0.0 0:00.00 kworker/0:0h 7 root rt 0 0 0 0 s 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcuob/0 10 root 20 0 0 0 0 s 0.0 0.0 0:01.82 rcu_sched 11 root 20 0 0 0 0 r 0.0 0.0 0:02.10 rcuos/0 12 root rt 0 0 0 0 s 0.0 0.0 0:00.91 watchdog/0 13 root 0 -20 0 0 0 s 0.0 0.0 0:00.00 khelper 14 root 20 0 0 0 0 s 0.0 0.0 0:00.00 kdevtmpfs 15 root 0 -20 0 0 0 s 0.0 0.0 0:00.00 netns 16 root 0 -20 0 0 0 s 0.0 0.0 0:00.00 writeback 17 root 0 -20 0 0 0 s 0.0 0.0 0:00.00 kintegrityd 他に確認する場所がわからない。digitalocean vpsをram 512mb、月額5ドルのプランで使用しています。
回答: この問題は、サーバー上でram)が490mbしかないと思われ、421mbが使用されています。空き容量は68mbしかありません。これは、どのシステムでも使用できるメモリではありません。topの出力を見ると、mysql(別名:mysqld)が原因であることがわかります。これが一時的な状況である場合にできる最善のことは、次のようにmysqlを単に停止することです。sudo service mysqld stop その後、mysqlを停止すると、期待どおりにyum installを実行できます。しかし、別の解決策は “ mysql tuning primer” のようなスクリプトを使用して、mysqlの使用とサーブ上の設定を評価し、それに応じて調整することです。理由は単純なバニラmysqlがそのままの状態であるからです。しかし、「mysql tuning primer」は、インストールを評価し、調整できることを通知するのに役立ちます。限られたリソースでセットアップが満足できるように、メモリ要件を下げることを含みます。唯一の問題は、mysqlが「mysql tuning primer」の結果を価値のあるものにするために、少なくとも48時間連続してアクティブに実行する必要があることです。それ以降は、このスクリプトを使用してmysqlをパフォーマンスチューニングすることは、laを微調整するための優れた方法です。セットアップ。さらに、apacheを実行しているので、おそらくram apacheの要件(別名httpd)を下げることができるため、より多くのramこれは、apacheの基本的な開発環境向けのかなり一般的な微調整のセットですが、役立つはずです。まず、このようなお気に入りのコマンドラインエディターを使用してapache構成を開きます。私は nano しかし、任意のテキストエディタが適切です。sudo nano /etc/httpd/conf/httpd.conf aがtimeoutと言っている行を見つけて、「120」に変更します。 2分は妥当なタイムアウトウィンドウです。timeout 120 同様に、maxkeepaliverequestsを見つけて「24」に変更します。 「キープアライブ」接続は適切ですが、設定を圧倒させないでください。maxkeepaliverequests 24 そしてkeepalivetimeoutを見つけて「2」に設定します。これは、サイトの1ページの読み込み速度と相関しているはずであり、2秒が平均です。keepalivetimeout 2 次に、<ifmodule mpm_prefork_module>として設定されたxml構成ディレクティブを探します。<ifmodule mpm_prefork_module> startservers 8 minspareservers 16 maxspareservers 32 serverlimit 40 maxclients 40 maxrequestsperchild 2000 </ifmodule> これの鍵はserverlimitとmaxclientsです。デフォルトでは、apacheの設定はかなり高いです。 maxclientsは255だと思います。しかし現実には、トラフィックの多いサイトでも1秒あたり70〜80の接続しか得られない...そして死ぬ...apacheの接続はステートレスであるため、ベンチマークは1秒あたりの接続数です。したがって、開発サーバーまたは小規模サーバーの場合、「40」が適切な数です。これらの重要な調整が完了したら、次のようにapacheを再起動します。sudo service httpd restart mysqlとapacheを調整してデフォルト/既定値よりも適切な設定にすることで、サーバー上のリソースを解放し、すべてをよりスムーズに実行できます。