httpdの消費メモリ節約

CentOS5.5に付属のhttpd(Apache)をデフォルト設定のhttpd.confで起動した場合、システム全体の消費メモリは750MBほどになる(RunLevel:3,Bluetooh,sendmailデーモンなどは切ってある)。そこでhttpdプロセスの一つあたりの消費量を減らし、なんとかCentOS VMに割り当てるメモリを512MBで済ませたい。

使わない追加Modulesを削る

参考にしたサイト

デフォルト?で有効になっているmodulesをコメントアウトする

LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule mem_cache_module modules/mod_mem_cache.so

自分で分かる範囲で明らかに要らなそうなもの。特に認証系、http以外のサービス、Proxyが対象。mem_cache_moduleもUSBの時にディスクI/Oを減らす為に入れただけなので今回未使用。

パラメーターを調節する

参考にしたサイト

デフォルト状態でベンチマークすると

#ab -n 300 -c 30 -w http://dolls.tokyo/index.php > /www/ab_ result.html

-n 300あたりでFailがぽろぽろ出てくる。これ以上悪化しない範囲で各数値をシェイプする。

変更前

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit       256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

変更後

<IfModule prefork.c>
StartServers       5
MinSpareServers    5
MaxSpareServers   10
ServerLimit       50
MaxClients        50
MaxRequestsPerChild  300
</IfModule>

結果、abの結果も合格点。実行後のシステムの総使用メモリは300MB程度。激減です。あとは定期的にapacheのerror_logを観察する事にします。

コメントを残す