自宅サーバは、小音/省電力を重視してメモリ1GBしか搭載していません。
デフォルトのApacheの設定では、メモリ使いすぎなので設定を見直しました。
消費しているメモリを確認
psコマンドで確認します。
VSZに使用メモリ(単位はKB)が表示されます。
Apacheがトップ5を独占しています。
一つ約400MB☓5で2GB近く専有していました…
$ ps aux --sort -vsz | head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND www-data 2270 0.1 10.2 398916 91536 ? S 22:51 0:02 /usr/sbin/apache2 -k start www-data 2267 0.0 10.0 390576 89180 ? S 22:51 0:00 /usr/sbin/apache2 -k start www-data 2268 0.0 10.0 390576 89180 ? S 22:51 0:00 /usr/sbin/apache2 -k start www-data 2269 0.0 10.0 390576 89180 ? S 22:51 0:00 /usr/sbin/apache2 -k start www-data 2271 0.0 10.0 390576 89180 ? S 22:51 0:00 /usr/sbin/apache2 -k start www-data 2278 0.0 10.0 390576 89180 ? S 22:51 0:00 /usr/sbin/apache2 -k start root 2001 2.6 10.7 390488 95984 ? Ss 22:50 0:32 /usr/sbin/apache2 -k start $
Apacheの確認
まずはバージョン
$ /usr/sbin/apache2 -v Server version: Apache/2.2.20 (Ubuntu) Server built: Nov 7 2011 22:45:46
lオプションで使っているワーカを確認する。(preforkを使ってました)
$ /usr/sbin/apache2 -l Compiled in modules: core.c mod_log_config.c mod_logio.c prefork.c http_core.c mod_so.c $
設定を確認します。/etc/apach2/apache2.confは、Debian/Ubuntuの方言ですね。
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule>
設定変更
利用しているのは私一人なので2プロセスも起動していれば十分
<IfModule mpm_prefork_module> StartServers 2 MinSpareServers 2 MaxSpareServers 2 MaxClients 150 MaxRequestsPerChild 0 </IfModule>
これでも1GB近く使うことになるのでworkerに切り替えたほうがよさそう
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND www-data 20126 3.8 10.4 400440 92872 ? S 23:36 0:01 /usr/sbin/apache2 -k start www-data 20134 2.6 10.4 400440 92848 ? S 23:36 0:00 /usr/sbin/apache2 -k start root 19874 45.7 10.7 390476 95980 ? Ss 23:35 0:28 /usr/sbin/apache2 -k start