書いた / “人間とウェブの未来 - ApacheとNginxの性能比較でevent_mpmの本気を見た” http://t.co/TL6ttnDc
2012-10-31 11:25:32@matsumotory ServerLimitはforkするサーバーの数です。60000に設定する意味ないです。ThreadsPerChildを2のまま接続数を増やすとプロセス数が増えるので性能出ないです。
2012-10-31 13:02:45@kfujieda event_mpm上ではseverlimitを増やさないと、maxrequestworkersをそれ以上増やす事ができません。それをクリアにする方法はseverlimitを増やす以外にありますか?
2012-10-31 13:08:35@kfujieda event_mpm的には一つのスレッド上で複数のリクエストを同時に処理する多重IOのアーキテクチャをとっているので、その辺りの実装は不完全とはいえ本来スレッドをコア数以上に増やす必要がないと思ったので2にしています。
2012-10-31 13:12:43@matsumotory MaxRequestWorkersの多すぎと、ThreadsPerThildの少なすぎがその原因です。数字のバランスが取れていないからエラーになるのです。
2012-10-31 13:15:41@kfujieda worker_mpmだとそうですが、同時接続数を万のオーダーかつコアの数のスレッドでそれぞれのスレッドが多重I/Oするモデルを想定したevent_mpmでは、こういう設定になると思いますが。もちろんスレッド数に依存するなら増やす必要がありますし追記もしています
2012-10-31 13:30:13@matsumotory スレッドあたりの多重I/Oの数を増やしたかったらMaxRequestWrokersを増やしてはだめです。この記事の実験例なら250もあれば足りるはずです。
2012-10-31 13:36:48@kfujieda 僕の知識不足だとは思いますが、MaxRequestWorkersを増やさずにスレッド数は固定で多重I/Oの可能数を増やす方法ってありますか?今からちょっと試せるので試してみます。
2012-10-31 13:43:34@matsumotory MaxRequestWrokersは多重I/Oとあまり関係ないです。多重度は16(たぶん)で固定で、使えるスレッドが少ないとeventは多重度を上げていきます。スレッドが足りなくなるとフォークします。
2012-10-31 13:48:06@kfujieda おっしゃっていることが分かってきました。結局の所event_mpmは1スレッドでうまくさばけるものではなくて、そもそもスレッド依存かつプロセス依存するMPMであるという事ですね。なので、プロセスとスレッド固定で多重度を上げる設定はない、となる気がします。
2012-10-31 13:51:40@matsumotory マニュアル読み直してみたら、さっきの僕の説明はでたらめでした。すみません。でも、eventもプロセス数とスレッド数のバランスを考えないと性能が出ないのはその通りです。
2012-10-31 14:32:38@kfujieda いえ、こちらこそありがとうございます。今色々試していて、2万同時接続とかしようとするとThreadsPerChildを300Threadの設定周りを1000とかにした場合、SeverLimitとMaxRequestWorkersを数千にする必要がありそうです。
2012-10-31 14:36:39@matsumotory 2万同時接続ならServerLimit 32, ThreadLimit 256, ThreadsPerChild 256, MaxRequestWrokers 8192くらいでいけませんか?
2012-10-31 14:48:49@kfujieda おおー、いけました。MaxRequestWorkersを多めにしておけば、ServerLimitはこんなので良いのですね。さっきの検証ではMaxRequestWorkersが少なかったです。
2012-10-31 14:52:26@matsumotory @kfujieda どうやらSpareThreadは512以上ぐらいにはしとかないといけないようです。
2012-10-31 14:58:08@matsumotory 前にブログに書きましたがMaxSpareThreadsは大きいほどいいです。これはworkerについてですがeventでも当てはまると思います。 http://t.co/bdFIuVSE
2012-10-31 15:07:10@kfujieda MaxSpareThreadsが大きい程の良いのは同感です。後は、event特有の値であるAsyncRequestWorkerFactorがどのようにチューニング可能なのかを見ないといけません。
2012-10-31 15:11:09