Tumblr某所の"munin"がびっくりするくらい画面表示が重くなっていて、ひょんなことから改善することになった話。前提条件として、このmuninが動いているサーバは数百台のノード(サーバ)を管理している状態で、muninのバージョンは2.0系でした。本当は、後学のためにも作ってくれた人に直してもらうべきと思いつつ、あまり悠長なことも言ってられない感じだったので、一人チューニンガソンを敢行。・・・要望があったのでログを残しておきます。(遅くなってごめんなさい)最初の状態(before)まず、muninのトップページですが、開いてみると、、、うほっ、19.61秒かかっておりました。これはなかなかのストレスです。HTML部分の出力に19.4秒かかっている。ここをなんとかせねばなるまい。次に4台分のサーバの各リソースの負荷状況が確認できるページを表示してみるとズラズラと出ております。各グラフ画像のpngファイルを1つ返すのに700ミリ秒程かかっていますね。結局、1ページ分全部読み込み終わるまでにトータルで29.75秒かかっていました。なんとかしてみましょう。cgiが入っていてHTMLファイルが動的に生成されるようになっていました。某所での経緯的に、バージョン1.4時代は、数百台のノードを管理していると、各種の静的ファイルの生成にマシンリソースをとられすぎて重かったため、全部動的にしてみたんじゃないかと思われます。ページ全体から見ると、構成するファイルは画像がほとんどだと思うので、HTMLだけを静的に事前生成するようにしておきます。cron明示的に、↑な感じで指定します。/var/www/html/munin/docs/こんな感じで設定しておきます。/var/www/html/munin/docsこんな感じで、先ほど設定したHTMLの出力場所が見れるようにしておきます。(VirtualHostでmunin専用にきられていたので、DocumentRootでトップに指定しちゃいました。)・・・さて、これでどうなったかというと、トップページのHTMLページが49msecで返るようになりました。静的ページですからね・・・。グラフのページもHTMLは高速で返るようになっています。グラフのページ全体では15.97秒です。CGI処理している部分をFastCGIに変えたこれは定石ではありますが、各グラフ画像の動的生成はCGIで処理されていたので、ここにFastCGIを突っ込みました。ApacheへのFastCGIモジュールの導入は、ググるとやり方がたくさん出てくるので、そちらを参考にしてください。Munin」に載っているので、こちらを参考に設定してみてください。modules/mod_fcgid.sofcgiのモジュールのロードと、(モジュールの作り方はググってくださいね。</Directory>こんな感じで入っていればOKかと。各グラフ画像のpngファイルが70ミリ秒くらいで返るようになったのが確認できます。素のCGIと比較して1/10くらいのレスポンスタイム。グラフのページはトータルでも2.26秒で返せるようになりました。静的ファイルを圧縮して配信さて、この辺からはおまけ的になってきますが、返す静的なファイルもモノによっては数十〜数百KBあり、muninのサーバのパワーに余裕があったので圧縮して配信してみます。application/javascriptこんな感じでmuninで扱っていそうな静的ファイルの種類のものだけ記載。配信サイズが小さくなって、217msecと若干早くなっていますが、インターナルな高速通信環境ということもあって、もはや体感はできないですね。グラフのページも静的なファイルのサイズが小さくなり、、、トータルは2.21秒となりました。keepaliveを有効にするよくよく考えると、グラフのページは大量の画像ロードがあるのと、muninにアクセスするユーザはたくさんいるわけではないので、Apacheのkeepaliveを有効にしておきます。(KeepAliveTimeoutは環境にあわせて適切に設定してください。)これでトップページはというと、、、196msecとこれまた若干速くなりました。グラフのページに関しても、1.96秒と若干の効果はあるみたいですね。さっきの設定もそうですが、チリも積もればなんとやらってことで・・・。1.96秒まで改善できました。これくらいなら、まともに使えそうですよね。</Directory>こんな感じでキャッシュを使えるようにしておくとよいと思います。あとは、muninを稼動させているサーバのマシンリソース(主にCPU)を確認しながら、FastCGIの起動プロセス数の調整muninのmunin_cgi_graph_jobsの調整muninのmax_processesの調整(ディスクI/Oがネックになっていれば)SSDやtmpfsの利用検討あたりをチェックしておけばいいのではないでしょうか。・・・ちなみに、実は3ヶ月くらい前にやったことを書き起こしたので、何か漏れとかあるかもしれません。その場合は、ご容赦ください。@namikawaメールアドレス執筆・講演依頼や、その他ご連絡は、以下のメールアドレスまでお願いします。お問い合わせスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。