[Ultramonkey-l7-users 254] Re: l7vsdでESTABLISHEDコネクションが残ってしまう

Back to archive index

miura iroir****@gmail*****
2009年 11月 28日 (土) 18:30:14 JST


中居様


三浦です。

> kernelのTCPスタックを利用しています、というのが一番正しいでしょうか。
丁寧に教えていただき有難うございます。
理解できました。

> コネクションに関してですが全くパケットが流れていませんか?

残り続けているコネクションについては何も流れてないです。

> realserver側のコネクションは増えていないんですよね?
> そうすると、realserverがapacheの場合にKeepAliveがOFFの時、
> データを送り返した場合にFINを発行して回線を切断します。
> UltraMonkey-L7では回線を切断した場合には対抗側のclient側の
> 回線も切断するシーケンスにいきますが、内部にデータが残っているときには
> このデータをclient側に送信してから回線を切断いたします。

realserver側は増えてないですが、l7vsd側をnetstatコマンドで見るとVIPとrealserver
間でもコネクションが張りっぱなし(表示上は)です。


> 1) realserver側で切断したシーケンスがうまくclient側に通知されていない。
>   = client側がshutdownシーケンスに入っていない
> 2) client側にFINを送っても呼応がない


今回の現象を再現する為に下記のツールを使用しました。
テスト用コネクションを張った後にクライアントPCのLANケーブルを抜き、
パケットが届かない状態でツールを終了させ再現しています。
(この方法で残るコネクションが実環境で起きている問題に非常に近いです)

http://keicode.com/iis/timeout_test_tool.php


上記方法を実施する際にクライアント、サーバ側でdumpしてるんですが
残ったコネクションには何も流れてない(こない)ですね。


よろしくお願いします。

2009年11月27日14:54 中居憲久 <n.nak****@sdy*****>:

> 三浦様
> 中居です。
>
>
> > > この値が存在するためにultramonkey自体は使用していないソケットのガベージ
> > > をしていません。
> > プログラムの知識が乏しいため的外れな質問であれば
> > 大変申し訳ないのですが、ソケット自体はultramonkeyが
> > kernelにオープンさせ、その後の切断処理については
> > kernel側で判断しているという認識で良いのでしょうか。
>
> kernelのTCPスタックを利用しています、というのが一番正しいでしょうか。
> ロストしたパケットや回線の切断検知などはUltraMonkeyで行っていません。
> ClientやRealServerが明示的にFINを送ってきてkernelが終了処理を行ったうえで、
> UltamonkeyにそのsocketがHUNGUPという形で伝わります。
>
> 元々TCPのソケットはプログラム上からみた場合にはストリームですから
> 内部のデータの開始やリトライなどはkernelが隠蔽します。
>
>
> > だとすると私の環境でコネクションがいつまでも切れないのは
> > OS側に問題が有る可能性が強いということですかね。
> > (OSはCentOS5.4 64bit版を使用しています)
>
> こちらも自宅ではCentOS5.3の64bit版(ただしkernelは入れ替えてありますが)です。
> ちょっとこのあたりはOSと限定することもできないんですけれど。
> (途中にL3スイッチなどがいても影響を受けます)。
>
> > > 1) OSでパケットロストした場合のリトライ回数を減らす
> > 減らして試してみたのですが、効果が見られませんでした。
> > 昨日より試験的に残したコネクションも未だ切れずにいます。
> > (16時間くらい経過しています)
>
> コネクションに関してですが全くパケットが流れていませんか?
>
> > > 2) max_eventsの値を大きくする
> > l7vs.cfのmax_eventsパラメータと同一ということで
> > 認識は合っていますでしょうか。
> > 以前に3倍程度まで引き上げてみたのですが、
> > 結果としては最大値まで達する日数が伸びた程度で
> > 改善には至りませんでした。
> >
> > 現状では一度コネクションが残ってしまうと確認できてる
> > 範囲では1週間以上残ってしまっています。
> > (切れずに上限まで達するので強制再起動で対処)
>
> realserver側のコネクションは増えていないんですよね?
> そうすると、realserverがapacheの場合にKeepAliveがOFFの時、
> データを送り返した場合にFINを発行して回線を切断します。
> UltraMonkey-L7では回線を切断した場合には対抗側のclient側の
> 回線も切断するシーケンスにいきますが、内部にデータが残っているときには
> このデータをclient側に送信してから回線を切断いたします。
>
> こちらでは上記症状が出ていませんので、
>
> 1) realserver側で切断したシーケンスがうまくclient側に通知されていない。
>        = client側がshutdownシーケンスに入っていない
> 2) client側にFINを送っても呼応がない
>
> …などが考えられます。
> コネクションが維持されているということは定期的に確認パケットを送受信していると
> 思われますのでもしできれば一つのコネクションのtcpdumpで流れているパケットが
> 本当にないのか確認できれば助かるのですが…。
>
> どうぞよろしくお願いします。
> -
> __________________________
> 株式会社SDY
> 中居憲久: n.nak****@sdy*****
>  tel:047-401-7210
> fax:047-401-7207
>



-- 
miura
-------------- next part --------------
HTMLの添付ファイルを保管しました...
다운로드 



Ultramonkey-l7-users メーリングリストの案内
Back to archive index