エキサイトブログ|検索

Developer @ ADJUST
ASP.NET スレッドプール枯渇の再現(3) - ソケットが先に枯渇 

ASP.NET スレッドプール枯渇の再現(2) の続き。

前回までで、自家製テスト用クライアントや、IEの同時接続数を増やすことができ、同時間帯の多数の Web 要求を送信できる環境がだいぶん整った。

ということで調子にのってガンガン要求送信を試していたら、またまたエラーが。

いろいろ試行錯誤しているうちに、netstat コマンドで TCP ソケットの状況を確認したところ、相当数の "TIME_WAIT" のままの TCP 接続が残っていることがわかった。

TIME_WAIT?
なんじゃらほいと Google 検索であちこち調べ歩く内に、下記ページを発見。

Windowsにおけるソケットの最大値とTIME_WAITの時間を修正しよう
http://nosa.cocolog-nifty.com/sanonosa/2006/04/windowstime_wai_00d2.html[外部リンク]

Windows の既定では TCP 接続が閉じられて TIME_WAIT になっている期間は 4 分とのことだそうだ。4分経過するまでこのポートは使えなくなるので、もしかするとこのことが原因で使用可能なポートが枯渇してしまったのかもしれない。

どの程度の値が最適値なのかわからなかったが、とりあえず、TIME_WAITの時間を30秒に変更したところ、エラーはでなくなり、安定してテストができるようになった。
ソケットの最大数を増やす方法もあったのだろうが、とりあえずテストが安定しだしたので、これでよしとしてみる。


ということで、いよいよ ASP.NET スレッドプール枯渇による Server too busy の再現になるかとおもいきや、これまたなかなか再現にはこぎ着けられなかった(つづく...)。



by developer-adjust
(2008/08/16 12:42)
.NET
タグ=ASP.NET,スレッドプール
コメント0件
トラックバック0件

(*)前へ  次へ(#)

コメントする

リンクする
特集
ゆるキャラデコメ特集
今流行のゆるキャラ満載!

Developer @ ADJUST
ログイン
エキサイトブログトップ
エキサイトモバイル

ヘルプ

上へ

(C)Excite Japan