松永です。

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

Attachment: pgpFvuUGizQ1I.pgp
Description: PGP signature

メールによる返信