質問: **Linux で、メモリーが明らかに不足していると判断する基準や方法はありますか?** ・当初は、どこかの数値がマイナスになるのかと思っていたのですが、私が調べた限りではそんな単純な話ではないことが分かりました ・あるサイトで「メモリのfreeが10%を切ったら」と書いてあったのですが、そういう判断基準がもしあれば教えてください --- 下記例の場合、「63/992*100=6.35」なので10%を切っている、という認識で合っていますか? ``` $ free -wh total used free shared buffers cache available Mem: 992M 790M 63M 7.5M 0B 138M 46M Swap: 4.0G 3.6G 446M ``` --- また下記で何か気が付いた点があれば、アドバイスをお願いします ``` $ top top - 20:52:00 up 77 days, 4:05, 1 user, load average: 1.20, 1.24, 1.32 Tasks: 314 total, 2 running, 312 sleeping, 0 stopped, 0 zombie %Cpu(s): 50.1 us, 0.2 sy, 0.0 ni, 49.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1016772 total, 68156 free, 817020 used, 131596 buff/cache KiB Swap: 4194300 total, 426228 free, 3768072 used. 45568 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1461 mysql 20 0 2278332 144568 4316 S 99.7 14.2 61489:41 mysqld 608 nginx 20 0 219260 1124 1076 S 0.3 0.1 3:17.01 uwsgi 19183 root 20 0 0 0 0 S 0.3 0.0 0:00.17 kworker/1:2 1 root 20 0 43360 1984 1312 S 0.0 0.2 13:56.35 systemd ``` **環境** ・CentOS7
回答: 「10%」も大まかな目安でしかなく、搭載しているメモリ量によって余裕の度合いは異なってきますよね? (1GBに対する残り100MBならカツカツだし、16GBに対する残り1.6GBならまだ踏ん張れそう) 実メモリが1GBしか無くてスワップの4GBもほぼ使い尽くしてる状況を見ると、明らかにメモリが足りていないと考えられます。VPSか何かでしょうか? スワップ領域は大抵物理ディスクですから、メモリに比べて圧倒的にアクセス速度が遅いです。頻繁にスワップが発生しているならメモリの追加も検討すべきでしょう。 `top`コマンドの起動直後は「CPU使用率順」ですが、私がよく利用するのは`Shift`+`M` (大文字M)で「メモリ使用率順」に並べ替えます。 質問文の結果を見るとmysqldがリソースを食っていそうなので(起動時間も非常に長い)、可能であればサービスを再起動してみて、それでも改善しなければ詳しく調べを進めてみる...という段取りになりそうです。 **追記** スワップのサイズも「増やせば増やすほどいい」ものではなく、実メモリに合わせた推奨値があります。システムのRAM(実メモリ)が2GB以下なら、「スワップはRAMの2倍」程度が推奨値とされています。 参考: システムの推奨 swap 領域 - Red Hat Customer Portal