ksaitoの日記

日々試したことの覚え書き

メモリの使用量を減らす

自宅サーバは、小音/省電力を重視してメモリ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