« 2005年08月 | メイン | 2005年10月 »

2005年09月30日

apacheのKeepAliveTimeoutを変更してパフォーマンスが劇的にアップ

サービスをいろいろと運営しているので、サーバーの管理などにはそれなりのノウハウを持っている(つもり)だったのですのですが、最近いろいろと作業を怠っていたらサーバーの負荷が結構高い状態になっていました。

こんな感じ。


11:12:15 up 245 days, 22:52, 1 user, load average: 2.71, 2.54, 2.54
1005 processes: 1002 sleeping, 3 running, 0 zombie, 0 stopped
CPU0 states: 97.0% user 1.0% system 0.0% nice 0.0% iowait 0.1% idle
CPU1 states: 94.0% user 5.0% system 0.0% nice 0.0% iowait 0.1% idle
Mem: 1029724k av, 1020676k used, 9048k free, 0k shrd, 79764k buff
746444k actv, 20k in_d, 21644k in_c
Swap: 2096472k av, 1048464k used, 1048008k free 164904k cache

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
25928 root 15 0 1036 232 212 S 99.9 0.0 2839m 1 libhttpd.ep


vmstat などを見るまでもなく、プロセス数が多くてスワップを食いつぶしているのがわかります。

対処方法としては

 - メモリを増やす
 - プロセスを減らす

のどちらかになるわけです(プロセスサイズはダイエットしているのでこれ以上は小さくならない…)。
#もとはといえば、MaxClients の値が大きすぎ、、なわけですが・・・ ^^;

で、こちらで運営しているサービスの特徴を考えると、どれも「ショートトランザクション」。
つまり、1クライアントからの1アクセスで複数回のリクエストがほとんど発生しない、というものです。

となると、apache の設定で KeepAliveTimeout を調整してみようということになります。


さて、せっかくなので、ここからもう少し理論的(?)に落としてみます (ついてきてください ^^;)。


現在サーバーの KeepAliveTimeout は 15秒です。

で、立ち上がっているプロセス数 1000 個のほとんどは apache プロセスだと仮定すると、現在サーバーはあっぷあっぷなので、平均してサーバーは1つのリクエストを処理するのに

15
-------- = 0.015 sec
1000

かかっているということになります。

で、このサーバーは一日 300万 (!) のリクエストがあるので、お客さんは平均して

60*60*24
---------- = 0.030 sec
300万

秒おきに到着することになります。


すると、単純な待ち行列理論から、サーバーの利用率ρは

 ρ = 平均サービス時間 / 平均到着間隔 = 0.015 / 0.030 = 0.5

となります。

すると待ち行列の長さは、ρ/(1-ρ) = 1 となり、これは「いつこのサーバーにいっても、たいてい1人待ってる」状態となります。まさにあっぷあっぷ。
(ロードアベレージ上ではもう少し大きい値(2.7)になっていますが、これは実行中のジョブも含んでいる(CPU2つあるので、2を引きます)ので「たいてい 2.7 - 2(実行中) = 0.7 人待ってる」状態ということを意味しています。日中の閑散時間帯であることを考慮すると、概ね計算が合います)。

が、これはランダムに人が到着する場合ですので、夜11時にアクセスが集中するような サービス の場合、正直この「利用率 0.5」というのはかなり危険ゾーンだったりします。
アクセスが集中して、予想の倍の来客があれば 到着間隔 = 処理時間 となり、待ち行列は増える一方、サーバーは完全にダウン、となるからです。

Load Average でいえば CPU 数 x 1.5 を慢性的に超えるようになったら赤信号ということですね。


ということで、KeepAliveTimeout を見直して、「10」に変更してみます(本当はもっと小さくてもいいのですが、とりあえず無駄なプロセスが減ればいいので、ここは少しづつ変更していきます。)


すると、こんな感じになりました。


12:06:15 up 245 days, 23:46, 1 user, load average: 0.31, 0.25, 0.61
352 processes: 350 sleeping, 2 running, 0 zombie, 0 stopped
CPU0 states: 14.0% user 1.0% system 0.0% nice 0.0% iowait 83.0% idle
CPU1 states: 5.0% user 0.1% system 0.0% nice 0.0% iowait 93.0% idle
Mem: 1029724k av, 717156k used, 312568k free, 0k shrd, 89340k buff
468244k actv, 25960k in_d, 14452k in_c
Swap: 2096472k av, 89192k used, 2007280k free 188448k cache

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
16483 root 16 0 2104 1348 1276 S 22.0 0.1 9:58 0 libhttpd.ep

劇的に改善!です。

計算上はサーバーの処理時間が 2/3 になるので、待ち行列の長さは半分の 0.5 になります。
が、実際には、サーバー処理時間が短くなったことにより、待ち行列が伸びる可能性が劇的に削減され、結果的にプロセス数が半分以下におち、swap もほとんど消費することがなくなるという好循環がおこったようで、パフォーマンスが相当改善されたというわけです。


もちろん、他にもいろいろと複合要因があるとは思うのですが、パラメータ一つでこれだけ改善されたことにちょっとびっくり。


みなさんも サーバーの増強を考えるまえに、チューニングの見直しも検討してみてはいかがでしょうか。


●参考
 @IT: httpd.confによるWebサーバの最適化

投稿者 aka : 時刻 16:32 | 固定リンク | トラックバック

2005年09月22日

フィードメーターの改修点まとめ

フィードメーターについて、改修点をまとめておきます。

 ・人気度算出エンジンの変更
   順次新しい人気度に変わっており、その影響で引き続きランキングが多少踊っています。
   (詳しくはこちらをご参照ください)

 ・人気の最も高いRSSを自動選択
   複数のRSS/Atomフィードを配信している場合、サイトのURLを入力して表示される
   フィードメーターは、その時点で最も人気度の高いものが選択されるようになりました。
   ただし、一度すべてのフィードの人気度が測定されている必要がありますので、
   複数フィードを配信している場合は、まずはすべてのフィードを測定してみてください。

 ・過去ランキングの表示
   フィードメーター開始時点からの過去ランキングを閲覧できるようにしておきました。
   古いものは残骸(?)データから再生していますので、注意書きにあるとおり、当時と若干
   順位が異なっている可能性があります。

 ・休眠ブログ/引越しブログ
   休眠ブログ/引越しブログについては、一定期間後にランキングから削除していましたが、
   まだあまり十分ではなかったので、少し条件を増やしています。
   更新がないブログについては、1ヶ月少々でランキングから消えるようになっています。

その他、お問い合わせがあるのは、300位より下が見たいというものですが、さすがにここから先は人気度 0.1 単位で数百のブログが存在しており、そのままランキングを拡大するわけにもいかず、いろいろと思案中です。

ランキングについては、エンジンの変更により若干踊っていますので気になるところかと思いますが、しばらくは現行の表示方法で、ということでよろしくお願いいたします (_o_)

投稿者 aka : 時刻 13:39 | 固定リンク | コメント (1) | トラックバック

2005年09月21日

Google Picasa

Google Picasa の日本語版が公開されています。

これまであまり写真共有というものに興味を持っていなかったのですが、Picasa が予想以上に良い出来で、かなり驚きました。

 「忘れていた写真なども含め、あらゆる写真を見つけ出すことができます。」

まさにそのとおりです。忘れていた写真もすっかり整理されてしまいました。。。

インターフェースが秀逸なのはもちろん(macユーザーにとってはそれほどでもないのかもしれませんが ^^;)、Gmail や Blogger との連携もすばらしく、思わず またBlogger に戻ろうかと思ってしまったくらいです。

#こちらもいろいろと喜んでもらえるような便利ツールを出していかないと・・・

あまり関係ないのですが、その一方で Google University ( http://www.google.com/university/ ) がひっそりと落ちているのが気になります。
こちらは Google X 系の没ネタだったということなんでしょうか・・・(没ネタなら私も負けません ^^; )

投稿者 aka : 時刻 21:54 | 固定リンク | トラックバック

2005年09月15日

フィードメーター:人気度算出方法を変更しました

先日「フィードメーター改修(予告)」でお知らせしたとおり、フィードメーターの改修を実施しました。

人気度の算出方法を変更しましたので、若干順位などに変動があるかと思います。

#人気度は明日~来週くらいにかけて、徐々に調整されていきます。

人気度の算出根拠は従来どおり「RSSが購読されている」「リンクが張られている」を基準にしていますが、具体的な算出方法は引き続き秘密とさせてください (_o_)
#公開すると、人気度が操作できてしまう可能性がありますので・・・ ^^;

その他、細かい不具合修正なども実施されています。

ところで、今回の改修で、最近シェア上昇中の「Hatena::RSS」へのフィード一発登録リンクを、フィードメーターをクリックして表示される詳細ページに追加させていただきました。

はてなユーザーの方はどうぞ、ということで ^^

投稿者 aka : 時刻 18:23 | 固定リンク | トラックバック

2005年09月10日

フィードメーターマグカップ発送しました

連絡が遅くなってしまいましたが、RSSフィード.cc公開記念キャンペーンのご当選者様にフィードメーターマグカップを発送させていただきました。

050908_115510.jpg

無事30名さま全員にお送りできてほっとしております。

また、すでに皆様から「到着した」とのご報告も頂いており、ありがたい限りです。
当選発表ブログにも、たくさんトラックバック&コメントいただき、ありがとうございました!

期待を裏切らないものであることを願いつつ。。。


(PR担当の方が)丁寧に箱詰めしましたので、おそらく壊れていることはないと思うのですが、もし何かありましたらご連絡ください。


ちなみに・・・私もマグカップ、もったいなくてまだちゃんと毎日使えていません (w

投稿者 aka : 時刻 15:48 | 固定リンク | コメント (1) | トラックバック

2005年09月07日

フィードメーター改修(予告)

来週(後半)にフィードメータの改修を行います。

見た目にはほとんど変わらないのですが、しばらく手をいれていなかった

  人気度算出エンジン

を一部変更します。これにより、多少(?)人気度や順位が変動するかもしれません。

基本的な算出方法は従来から変更ありませんが、より正確に測定できるような拡張をいれたことと、継続は力なり、ということで長く更新を続けているブログが若干加点されるようになっています。

#その他、負荷対策など もろもろ改修を入れています。


来週後半あたりから徐々に数値が変動していきますので、一応こちらで予告、です。

投稿者 aka : 時刻 12:32 | 固定リンク | トラックバック

2005年09月02日

Googleは2語検索が基本?

先日、ブログアクセスの 1/3 は検索エンジンから というデータを公開させていただいたのですが、その統計をさらに掘り下げて、「検索するときの単語(ワード)数」を調べてみました。

※対象データの特性から、基本的にブログに対する検索結果についての分析となります。


image005.gif


グラフのとおり、半分以上が1単語で検索されていますが、2単語での検索もかなり多く、合計で9割近くに達します。
(2ワードとは、「旅行 ハワイ」などのようなものです。「ハワイ旅行」は1ワードです)

3ワードまでで合計97%に達しますので、これ以上は例外的な検索、ということのようですね。

そして、この検索ワード数を検索エンジン別に調べてみました。

image004.gif

Google は他のエンジンと比較して、検索単語数が多いようです。
1.8を超えているということは、「2語検索」が基本、といえるかもしれません。

やはり Google を使っている方はリテラシが高く、目的の結果を得るために、意識的に単語数を増やして絞り込んでいる、ということなのでしょうか。


検索エンジンの影響はこれからも増していくと思いますが、それぞれのエンジンの特性を把握しておくこともブロガーのSEO対策(というか、まずはアクセス解析ですね)として重要性が増してくるかもしれません。

#このデータを見た友人が「え、みんなまだ1単語で検索してるんですか!」と驚いていました。
#同じように感じた方は、きっとITリテラシが高い方です ^^。

投稿者 aka : 時刻 14:54 | 固定リンク | トラックバック