CentOS 7は、「yum install」操作中にメモリを割り当てることができません


11

しようとする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、RAM 512MBのVPSを使用しています($ 5 /月のプラン)。

回答:


8

この問題は、サーバー上でマシン上に490MBのRAMしかなく、421MBが使用されているようです。68MBの空き容量のみを残しています。これは、どのシステムでも使用できるメモリではありません。

からの出力を見ると、topMySQL(別名mysqld:)が原因であることがわかります。

これが一時的な状況である場合にできる最善のことは、次のようにMySQLを単に停止することです。

sudo service mysqld stop

その後、MySQLを停止するとyum install、期待どおりに実行できます。

しかし、別の解決策は、「MySQL Tuning Primer」のようなスクリプトを使用して、サーバー上のMySQLの使用状況と構成を評価し、それに応じて調整することです。その理由は、箱から出したばかりの単純なMySQLが記憶を独占することです。しかし、「MySQL Tuning Primer」は、インストールを評価し、何を調整できるかを知らせるのに役立ちます。限られたリソースでセットアップが満足できるように、メモリ要件を下げることを含みます。唯一の問題は、「MySQL Tuning Primer」の結果が価値あるものになるためには、MySQLが少なくとも48時間連続してアクティブに実行されている必要があることです。それ以降、このスクリプトを使用してMySQLをパフォーマンスチューニングすることは、LAMP設定を微調整するための優れた方法です。

さらに、Apacheを実行しているhttpdので、Apache(別名)のRAM要件を下げることができるため、そのようにしてより多くの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

次に、次のように設定されたXML構成ディレクティブを探します<IfModule mpm_prefork_module>

<IfModule mpm_prefork_module>
  StartServers           8
  MinSpareServers       16
  MaxSpareServers       32
  ServerLimit           40
  MaxClients            40
  MaxRequestsPerChild 2000
</IfModule>

これの鍵はServerLimitand MaxClientsです。デフォルトでは、Apacheの設定はかなり高いです。MaxClients私は255 と信じています。しかし現実には、トラフィックの多いサイトでも1秒あたり70〜80の接続しか得られない…そして死ぬ…Apacheの接続はステートレスであるため、ベンチマークは1秒あたりの接続数です。したがって、開発サーバーまたは小規模サーバーの場合、「40」が適切な数です。

これらの重要な調整が完了したら、次のようにApacheを再起動します。

sudo service httpd restart

MySQLとApacheを調整して、デフォルト値や既定値よりも適切な設定にすることで、サーバー上のリソースを解放し、すべてをよりスムーズに実行できます。


17

スワップファイルを作成できます。

fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

これにより、スワップファイルが作成され、アプリケーションをインストールできるようになります。スワップファイルを削除するには:

swapoff -a
rm -f /swapfile

詳細はArch wikiをご覧ください。


1
良いアイデア。何らかの理由で、スワップをオフにするために、一部のディスク領域を失う以外に?
raider33

スワップ設定に応じて、システムは50%程度のメモリ負荷で使用を開始できます。システムに512MBとあるが、ほとんどの場合〜400MBを使用している場合、スワップなしで完全に正常に動作しますが、それを使用すると、150MBを前後にスワップしようとして速度が低下する可能性があります。しかし、私はそれについて間違っているかもしれません。
pbogut 16

sudoコマンドに使用することを忘れないでください
Raptor

1
fallocateはごまかして機能しない可能性があります...使用sudo dd if=/dev/zero of=/swapfile count=512 bs=1MiB
Ray Foss
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.