ちからの備忘録的日記 » cache » Varnish のパフォーマンスチューニングについて
Varnish のパフォーマンスチューニングについて
Varnish の公式 wiki にパフォーマンスチューニングについてのドキュメントがありましたので、ご紹介です。
Varnishi 設定
-p thread_pool_min=200 (default: 5)
この設定値と利用可能なスレッドプール数(default: 2)をかけたスレッド数で、通常時のアクセスをさばけるように設定しておくとよい。
-p thread_pool_max=4000 (default 1000)
生成する最大スレッド数。OSとして使えるファイルディスクリプタ数にも注意しましょう。5000以上設定しても問題ないが、パフォーマンスがあがることはまれで、逆にファイルディスクリプタの問題に悩まされるリスクがある。
-p thread_pool_add_delay=2 (default: 20ms, default in master: 2ms)
アイドルスレッドを生成する間隔を短縮します。そうすることで、リクエストキューがいっぱいになることを防げるし、リクエストを破棄してしまうリスクを少なくできる。ただし、2ms 未満に下げると、スレッド生成処理が追いつかなくなり、逆に遅くなるリスクがある。
-p session_linger=100 OR MORE (default: 0ms in <= 2.0.4 and 50ms in > 2.0.4)
コンテキストスイッチの大量発生によるパフォーマンスダウンを避けるために、スレッドが次のリクエストを受けるつける間隔を伸ばすことは重要。どのくらいの間隔に伸ばすかは、サイトによって異なるが 100ms から徐々に伸ばしていくとよい。これにより、スレッド数の生成処理の発生を抑えることも可能である。
-s malloc,(YOURMEMORY-20%)G
ディスクじゃなくて、メモリを使おう!デフォルトは、file です。
VCL設定
grace 機能を有効にすることで、バックエンドサーバが新しいコンテンツを生成する猶予を与えることができます(その間は古いコンテンツをクライアントに返すことになります)。無駄なスレッド生成処理を抑制することも可能になります。
sub vcl_recv {
set req.grace = 30s;
}
sub vcl_fetch {
set obj.grace = 30s;
}
OS設定
FreeBSD
個人的にあまり利用しないので割愛。。。詳細は、こちらをどうぞ。
Linux
Varnish の作業ディレクトリ(多くは、/usr/lib/varnish)を tmpfs ファイルシステムでマウントしましょう。ディスクへのアクセスを減らすことが可能になります。
All UNIX platforms
varnish がアクセスするデータファイルががあるマウントポイントのオプションに、noatime, nodiratime を設定しましょう。ディスクへのI/Oを減らすことが可能になります。
Varnishの監視
以下を監視しましょう。
- キャッシュのヒット率
- キャッシュされるリクエストの割合
- スレッド数の推移
varnishstat で確認することができます。
グラフ化するなら Nagios か Munin があります。
Anders Nordby’s plugins page には、上記の3つの監視項目をグラフ化するMunin のプラグインが公開されています。
追記:2011/05/09
Varnish パフォーマンス関連の記事を以下にも書きましたので、ご参考に。
» 続:Varnish のパフォーマンスチューニングについて
Filed under: cache · Tags: cache, performance, tuning, varnish








