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を調整してデフォルト/既定値よりも適切な設定にすることで、サーバー上のリソースを解放し、すべてをよりスムーズに実行できます。
スワップファイルを作成できます。
fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
これにより、スワップファイルが作成され、アプリケーションをインストールできるようになります。スワップファイルを削除するには:
swapoff -a
rm -f /swapfile
詳細は Arch wiki を参照してください。