さくらのVPS、現状の使い方だとメモリキャッシュが大変有効に働いているのが良くわかった。
サーバーの能力は今の使い道では全然余裕なんだけど、少しでも自由に使えるメモリを増やしておきたくなった。

あと、同時接続数云々ってのも少し心配、、、というか気にかけておかないと余力を持て余しながらトラフィックが渋滞しちゃいそうだな。。。と判断。

まずはKeepAlive、次にモジュール削除

httpd.confファイルを開き、
  ・KeepAliveの設定を、自分のサイト向けに最適化
  ・不要と思われるモジュールのコメントアウト
上記2点のチューニングを行って見る事に。

MaxKeepAliveRequests

初期値は100

 ・1回のKeepAliveで処理できるファイルの数。
 ・KeepAliveの最大同時接続数。
ネット上にはこの2種類の解説があって、私にはどちらが正しいか判断できない(^_^;
私の英語力じゃ自信が持てないけど多分「1回のKeepAliveで処理できるファイルの数。」が正しいと思う。さらにconf内コメントには「大きな数字のままにしておく方がパフォーマンス的にオススメだよ」とある。

ウチのサイト内のウェブページでは、平均して20回、多いページでは40回のリクエスト数が発生する。とりあえず
MaxKeepAliveRequests 60
とした。100~150くらいの数字にした方が良さそうな気もするが、暫定的に60。

参考リンク:@IT:httpd.confによるWebサーバの最適化(2/3)

KeepAliveTimeout

クライアントとの接続秒数・初期値は15秒

とりあえず、ブロードバンド回線なら2~3秒で全ての描画が終わるので
KeepAliveTimeout 6
とする。

これは判断が難しかった。あまり短い秒数を設定するとナローバンド利用者が不便になるし、長い秒数を設定すると利用者が多い時にリソースを食いまくり結果表示が遅くなる。

現在、このサイト利用者のうちダイアルアップは2%
PCサイト側を閲覧するモバイル・スマートフォンユーザーは1%

スマートフォン利用者は今後は増えていくだろう。こいつの回線速度は都会と田舎で天と地ほどの差がある。困った。

私の携帯でPCサイトを利用すると、表示するのに40秒以上かかる。
でもこの秒数をKeepAliveTimeoutに設定するのはまずいだろう。そもそも携帯ブラウザがKeepAliveに対応しているかも疑問。

この問題は今は深く考えず、後々考えて行く事にする。

微妙に参考になりそうリンク:
導入メリット | ロードバランサー NetScalerの導入によって得られるメリット

 

空きメモリを増やす(読み込みモジュールを減らしてみる)

あちこちのサイトを参考に、「不要かな?」と思ったモジュールをコメントアウト
現在のhttpd.confモジュール読み込みリスト

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
#スペルミス。HTMLサーバの時は使うかも
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 file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#▲キャッシュ関連は後々大いに使う予定
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

#
# The following modules are not loaded by default:
#
#LoadModule cern_meta_module modules/mod_cern_meta.so
#LoadModule asis_module modules/mod_asis.so

#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf

今後*.conf読み込みも減らす予定。
今の所 phpmyadmin.confとphp.confの二つだけ読み込みに留めておく。

とりあえず上記をコメントアウトしても、問題もなくエラーもなく稼動中。
(サーバーにたいした仕事させてないけど)

 

キャッシュ機能OFF

上記ディレクトリの赤字部分の話
ちょっと試しにfile_cache関連のモジュールをコメントアウトしてみたけど。。。

コンパネでOSごと再起動をかけても、さくらのVPS管理画面のリソースメーターを見る限りでは、キャッシュが効いているように見える。
(DISK I/O(Read)はサーバー起動直後に大きな数字を示すがその後はほとんどゼロに近い)
ApacheのキャッシュとOSのキャッシュは別物なのか・・・?

Apache mod_disk_cacheでコンテンツをキャッシュする

mod_cache - Apache HTTP サーバ

後で読み直そう。

 

それにしてもroot権もらってhttpd.confからいじりまくるのは楽しすぎる。
夢もひろがりんぐ。

あ、あと昨日のブログに少しだけ追記入れる予定。