[Seasar-user:18742] Re: [S2Axis2]SAStrutsのAcitonから呼び出した際にソケットクローズされない
秋山 俊郎
[E-MAIL ADDRESS DELETED]
2009年 10月 23日 (金) 12:04:54 JST
秋山です。
問題は解決できました。
axis2の問題のようでしたのでaxis2に手をいれました。
Koichi Kobayashi さんは書きました:
> 「大量に」というのが気になるのですが,
> [Seasar-user:18619] に対する回答のように
> Connector を prototype にしていたりしますか?
instance属性は特にいじっていませんのでdefaultのsingletonです。
> commons-httpclient がソケットをプーリング
> しているのであれば,通常そのソケットは
> 再利用され,CLOSE_WAIT が大量になることは
> ないのでは?
> CLOSE_WAIT が残ることより,それが大量であることが
> 問題のように思われます.
サーバ側が先にコネクションをきると(通常サーバのキープアライブはどんなに
長くても数十秒だと思います。サーバのコネクションを食いつぶしてしまいます
ので)
そのソケットは再利用できませんので、クライアントは新たにソケットを
作成します。axis2内ではコネクションクローズを行っていません
ので、クライアント側に再利用できないソケットが残ることになります。
この問題はaxis2内のcommons-httpclientの誤った使い方に端を発しているよう
です。
MultiThreadedHttpConnectionManagerと
HttpConnectionManagerのcloseIdleConnections
を使わないといけないようです。
(参考)
http://www.nabble.com/tcp-connections-left-with-CLOSE_WAIT-td13757202.html
http://thejavamonkey.blogspot.com/2009/05/axis-2-clients-socket-exception-too.html
ですのでaxis2内で手を入れて逃げました。
axis2 1.5.1で対応したようです。
http://osdir.com/ml/axis-dev-ws.apache.org/2009-08/msg00012.html
s2axis2のバージョンアップをしていただけるととてもうれしいです。
http://d.hatena.ne.jp/szk-takanori/20090617/p1
以上です。
Seasar-user メーリングリストの案内