この記事は KainokiKaede Advent Calendar 2014 12日目の記事です(大嘘)
さくらの VPS のメモリ 1GB のプランを利用しているのだが、かなり重くなったりしたので原因を調べてみた。
Munin で見てみるとスワップがGB単位で発生していて、どうやらこれが重くなる原因と考えられた。
どのプロセスがスワップしているのかを調べるため、 スワップの量の順にソートする Perl スクリプト を書いてくださった方がいらっしゃったので利用させていただく。
$ perl swaplist.pl | head -40 --------------------+----------+---------------+ Swap size classified by processes | --------------------+----------+---------------+ Process Name | PID | Swap Size | --------------------+----------+---------------+ clamd | 997 | 273028KB | ruby | 23761 | 103788KB | httpd | 23749 | 43288KB | httpd | 7753 | 30132KB | httpd | 5002 | 25880KB | ruby | 4732 | 23536KB | mysqld | 1135 | 22408KB | httpd | 23753 | 13296KB | httpd | 16240 | 12824KB | httpd | 7756 | 9744KB | httpd | 16239 | 9724KB | httpd | 7754 | 7380KB | httpd | 7758 | 5648KB | httpd | 23750 | 5580KB | httpd | 7755 | 5124KB | munin-node | 1332 | 5056KB | httpd | 16238 | 4872KB | httpd | 23747 | 4824KB | httpd | 7759 | 4800KB | httpd | 7757 | 4664KB | httpd | 1246 | 4660KB | httpd | 23748 | 4260KB | httpd | 23751 | 4012KB | httpd | 23752 | 3320KB | httpd | 21920 | 3196KB | httpd | 23746 | 3060KB | python | 1707 | 2584KB | rsyslogd | 920 | 1096KB | tmux | 5325 | 1000KB | qmgr | 1242 | 876KB | master | 1233 | 808KB | PassengerHelper | 23731 | 744KB | udevd | 378 | 716KB | udevd | 662 | 712KB | sshd | 958 | 616KB |
これを見ると問題点がわりと明確になる。
1.
対症療法(笑):$ sudo service clamd restart
スキャン対象のディレクトリを制限してやるのが良いようだ。具体的には /proc/ /sys/ を除外するとか。
$ sudoedit /etc/clamd.conf
- #ExcludePath ^/proc/ - #ExcludePath ^/sys/ + ExcludePath ^/boot/ + ExcludePath ^/proc/ + ExcludePath ^/sys/ + ExcludePath ^/var/ + ExcludePath ^/etc/
$ sudo service clamd restart Starting Clam AntiVirus Daemon: LibClamAV Warning: Detected duplicate databases /var/lib/clamav/main.cvd and /var/lib/clamav/main.cld, please manually remove one of them $ sudo rm /var/lib/clamav/main.cld $ sudo service clamd restart
2.
$ sudoedit /etc/httpd/conf/httpd.conf
<IfModule prefork.c> - StartServers 8 - MinSpareServers 5 - MaxSpareServers 20 - ServerLimit 256 - MaxClients 256 - MaxRequestsPerChild 4000 + StartServers 4 + MinSpareServers 2 + MaxSpareServers 10 + ServerLimit 128 + MaxClients 128 + MaxRequestsPerChild 30 # MaxMemFree 1024 </IfModule>
$ sudo service httpd restart