カレンダー
<< April 2024 >>
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最近のエントリー
最近のコメント
最近のトラックバック
カテゴリー
月別アーカイブ
リンク
その他

apacheのworkerってホントに、意味あるのかな。
#今回は、めちゃくちゃコンピューターチックな話。
#苦手な人は、とばしてちょ。

家鯖のWEBを、ReverseProxy構成にしようと、目論んでます。

今は、Webサーバーだけで、そこにPHPをモジュールで動かしています。
特に、充電生中継というツールが、非常にメモリーを食うので、通常に、フロントのWebサーバーで、大量のpreforkをすると、ちと、メモリー的につらいかも、、、
というのがあり、今は、実は、preforkを7本で固定にしてます。
なんで、7本って中途半端な数字かといえば、画像がたくさんあるようなページだと、最近のブラウザは6本も同時接続しやがる、という関係で、一本ぐらいのこしてやろうか、、、なんて感じ。
#ま、あまり意味のない残し方ですが、、、
で、KeepAliveは1秒と、短くしてます。
ま、ここまで節約しなくても、、、という気はしますが、、、
ただ、それで十分はけるほどのリクエストしか、来ないんですけど。

で、計画としては、以下のような感じ。
  1.フロントのサーバーは静的コンテンツを返す。
    (1)つまり、リバースプロキシー
    (2)workerを使って、50ぐらい、スレッドをうごかしてあげる。
    (2)keepaliveは、5秒ぐらいに増やしてやるかな。
  2.バックエンドにPHPやCGIのプログラムを流す。
    (1)プロセス数は1とか2とかで固定。
    (2)当然prefork
    (3)keppaliveはしない。
  3.1と2のプログラムのビルドは、同じものを使う。
    (1)つまり、apache 2.3のloadable MPMを使う
    (2)できるものはすべてDSOにして、実行時にリンク
まとめると、リバースプロキシーをメモリー節約のために使おうかと。で、あまったメモリーをkeepaliveに使ってやる、って感じ。(サーバーは1台で、フロントとバックエンドのApacheを動かします。)

とまあ、計画的には完璧なはずが、1(2)のworkerで、はまった感じかな。

いやあ、いろいろとベンチマークとかやったんですけどね、、、
どういう現象かといえば、同じリクエストをさばくための、メモリーが、結局preforkのほうが少なくて済む、、、
というもの。スピード(CPU使用時間)も、そう変わらん感じ。

なんでなんでしょうねー
メモリー量については、コード部分や定数部分は、もともと共有する機能が、OSにはついてるので、個別データ部分が違うかと思ったんですけど、、、、
まあ、よくよく考えてみれば、スレッドごとにプライベートにメモリーを使っちゃったら、一緒だし。
CPUについても、プロセスの切り替えが少ないWorkerのほうが有利かと思ったんですが、UNIXなんて、プロセスが軽いOSだと、プロセスの切り替えに負荷もほとんどないのかなあ、、、とかおもっちゃったり。

ということで、なんのこっちゃ、という感じです。
ま、本気でお仕事でやってるわけじゃないので、テストに失敗してる可能性もありますが。
ま、今、2.3はベーター版なので、リリース版が出たら、もっぺん試すかな、、、

で、翌日追記

ちゃんと、意図通り動きました。というか、正確には、動くと思います、が正しいけど。
意図というのは、workerにして、keepaliveをたくさん面倒を見たときに、preforkよりメモリー節約になる、ということ。
ただ、期待してたほど、メモリーの節約にはならなかったですけどね。

今回の反省:
  apacheのabだけで、こんなテストをするのは、かなり難しい。
    例えばswapされても、使わないモジュールが使ってるメモリーが追い出されるだけ。
  酔っ払ってベンチマークをしても無駄だ。

で、最初に書いた、「動くと思います。」だけど、実際にレスポンスやスループット等の差に、現れるようなテストは、かなり大変なので、やりませんです。

というか、数秒に1回ぐらいしか、ユーザーがアクセスしない、このサイトを、数百、数千、数万ユーザー向けに、まじめにチューニングしてもなあ。 smash.gif


あ、嘘ついた。
誤: 数秒に1回ぐらいしか、ユーザーがアクセスしない、このサイト
正: 数秒に1回ぐらいしか、ユーザー(ロボットも含む)がアクセスしない、このサイト

以上  
コメントする
お名前:

メール:

URL:

コメント:

トラックバック
この記事へのトラックバックURL:
これまでに受信したトラックバックはありません。

処理時間0.218秒