松永です。 On Thu, May 24, 2012 at 10:28:26PM +0900, Shigeki Ohtsu wrote: > 大津です。 > > これは http.Agent に関する非常に良い課題だと思います。 ----------- snip -------------------------------
非常に丁寧な解説、ありがとう御座います。 http.Agentの件、ちゃんとマニュアルに書いてありますね。 とりあえず、httpのマニュアルをちゃんと通読してみます。 理解出来ているかを確認する為、自分の言葉で表現してみます。 間違いがあるようでしたら、指摘していただけるとありがたいです。 ・Agentによるsocket poolingをしているよ ・同一host且つ同一portへのqueryの場合は、defaultはkeep aliveで つなぎに行ってるんで、すでに繋がっているsocketをかえすよ。 ・だから、実はhttp query毎にsocketを生成しているんじゃないから connect listenerの登録を、実は同一socketに複数回行なっているよ。 ・しかも、socketのconnect自体は一回しかしないから、それ以降に登録 されたlistenerへはconnectは発火されないんで、onceで登録しても 溢れるよ。 とりあえず、wiresharkで確認してみると、keep aliveを使って繋ぎ、 apacheの設定通り100回のrequestまでは同一connectionを使ってました。 もう少し調べて、keep aliveを使わない接続方法も出来るようにしてみます。 (ab cloneをとりあえず目指してみます) あと、sample code、非常に勉強になりました。 基本はthreadで作るのと同じように、並列数分処理の流れを作り、処理の最後で 再帰的に次の処理を呼ぶ形になるようですね。 で、Agentのsocket pooling数を並列数に設定しておく。 以上、ありがとう御座いました。 # gjslintなんてものがあるんですね。便利! -- MATSUNAGA Ichiro e-mail: [email protected] who am i: https://plus.google.com/103000727838025680940/about GPG fingerprint = DCEF C86E 2930 45D0 0941 E977 4DCE A95F 3914 4BED
pgpFvuUGizQ1I.pgp
Description: PGP signature
