LoginSignup
29
29

More than 5 years have passed since last update.

海の向こうにあるZabbixサーバの表示をWebサーバのチューニングだけで高速化する

Last updated at Posted at 2015-03-09

海外で展開しているサービスがある関係上各サーバの監視に利用しているZabbixサーバも海外にあるのですが、ほとんどチューニングされておらず、ZabbixのWebUIの画面をロードするのが遅くて遅くてしょうがないので頑張ってチューニングしてみた時の話です。

また、チューニング前後でダッシュボードのロードにかかった時間を計測してみました。

準備

まず、Google ChromeのDeveloper Toolsでキャッシュを無効にします。

chrome-cache-disable.png

チューニング前の状態

ZabbixはよくあるApache+mod_phpによる構成です。この状態でZabbixのダッシュボード(dashboard.php)にHTTPSでアクセスするとブラウザ左下のステータスバーにページのロードにかかった時間が表示されます。

zabbix-us-default.png

2.7秒かかっています。すごく遅いです。体感でわかるくらい遅いです。

Zabbixが定期的にポーリングしているせいか放っておくとどんどんrequestsやtransferred、経過時間が増加していくので今後これと同じ26requests処理するのにかかった時間を計測していきます。

チューニング開始

というわけでチューニング開始です。とりあえずApacheの設定を変更していきます。

KeepAliveを有効にする

Chrome Developer Toolsで各リソースのレスポンスヘッダを確認すると「Connection: close」になってます。
これでKeepAliveが無効だったことがわかったので有効にしてみました。

KeepAlive On

キャッシュを無効にした状態でZabbixのダッシュボードを再びロードします。

zabbix_us_keepalive.png

おお、少し速くなりました。

gzip圧縮を有効にする

さらにレスポンスヘッダを見てみるとCSSやJavaScript、HTMLのどれにも「Content-Encoding: gzip」が付いてないのがわかりました。また、ステータスバーをよく見るとダッシュボードの画面を表示するのに766KBものデータがネットワークを流れています。

というわけでmod_deflateで静的コンテンツを圧縮しましょう。

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/javascript
</IfModule>

キャッシュを無効にした状態でZabbixのダッシュボードを再びロードします。

zabbix_us_keepalive_gzip_expire.png

ページのロードにかかる時間が約半分になりました!

Apacheの前にnginxを配置する

さて、実のところApacheはあまり得意ではないので自分の得意なnginxに切り替えたいところです。また、mod_phpを利用している関係上、ApacheのMPMはpreforkなのでmod_spdyが利用できません。

さらに言うとFastCGIの設定するのは面倒なのでやりたくありません。というわけでこれまでのチューニングを施したnginxを前段に配置してHTTPSのかわりにSPDY3.1で通信するようにしてみました。

zabbix_us_nginx_again.png

1秒切りました!なお、できるだけApacheのときと同じネットワーク転送量になるように設定しましたが、自分でも知らない部分での最適化が効いてるかもしれません。

まとめ

海の向こうにあるZabbixサーバの表示をWebサーバのチューニングだけで高速化してみました。元は2.7秒かかっていましたが、

zabbix-us-default.png

最終的に1秒を切ることができました。

zabbix_us_nginx_again.png

実際にやったことは、

  • KeepAliveを有効にする
  • gzip圧縮を有効にする
  • Apacheの前段にnginxを配置 & SPDY3.1化

上記では紹介していませんが実際にはこれに加えて

  • TLS Session Ticketsの有効化
  • OCSP Staplingの有効化

を行っています(TLS Session Cacheは最初から有効でした)。今回は地理的に遠いサーバだったのでネットワークの帯域やレイテンシを減らすのが効果的だったようです。

29
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
29