河端善博 ブログ / SQL Server

SQL Server, .NET

  SQLJP ブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  1022 投稿数 :: 112 ストーリー :: 1545 コメント :: 600 トラックバック

ニュース



dotnetnuke.jp
NPOPLUS.JP

記事のカテゴリ

過去の記事

カテゴリ

イメージギャラリ

.TEXT

INETA コミュニティ

MOM2005

MSMVP

SQL コミュニティ

sqljp

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

.TEXT

INETA コミュニティ

MOM2005

MSMVP

SQL コミュニティ

sqljp

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

Amazon, Yahoo, Twitter, RSS, REST, JSON など Web サービスを活用してプログラムをする機会が増えています。
とても便利な Web サービスですが、開発者が注意しておきたい点があります。

注意: TCP ソケット リソースには限りがあります。

一台のコンピュータで利用できる TCP ソケットは、限りあるものです。
さらに、TCP ソケットが利用するメモリなどのリソースは、ファイルやプロセスのハンドルと同じ領域を利用します。

このため、多くのプロセスが動作するコンピュータ上で、一度に使える TCP ソケットは限定されており、使い切ってしまうと、TCP 接続ができなくなる上に、さまざまなエラーが発生する可能性があります。

また、TCP ソケットは、CLOSE 処理後も、一定時間 TIME_WAIT ステータスとして保持されます。
たとえば、Amazon API を使って、100冊の書籍情報を取り出すループ処理を行った場合、一時的に 100 個の TCP ソケットが消費されます。CLOSE してから、次の処理をしているから、瞬間的には 1 個 の消費とはなりません。

また、10 冊の書籍情報を表示する Web ページが 100 ページある Web サイトの場合、Google や Bing などの検索エンジンのクローラにより、すべてのページにアクセスが発生すると、10 * 100 = 1000 個の TCP ソケットを一時的に消費します。短時間に 1万ページ以上をアクセスするクローラーもあります。

Web サービスだけでなく、SMTP, POP3, IMAP4, FTP, WebDAV も同様に限りある TCP ソケットを消費します。

なお、SQL Server は、限りあるリソースを有効に利用するため、コネクションプール技術を提供しています。
コネクションプールにより、大量のデータベースアクセスを、クライアント・サーバーともに安定して処理します。

便利な Web サービスを有効に活用するには、開発者が TCP リソースの制限を理解し、適切に管理していくよう注意しておきたいと思います。

TIPS:

  • コマンド netstat -ano -p tcp により、TCP 接続状況を確認する
  • レジストリにより TIME_WAIT を維持する時間を調整する
  • 接続処理を TIME_WAIT にあわせて一定の間隔をあける
  • Web サービスの値をキャッシュし、大量の Web サービス接続が発生しないように調整する
  • 最大 TCP 接続数が、一定以上にならないようにプログラムを調整する
投稿日時 : 2009年9月15日 5:03

コメントを追加

# re: Web サービスを利用する方、TCP リソース制限に注意 2009/09/15 9:41 K.Yamachika
The default dynamic port range for TCP/IP has changed in Windows Vista and in Windows Server 2008
http://support.microsoft.com/kb/929851/en-us

動的ポートの方はWindows Vista以降で拡大されて、49152~65535になりました。Windows 7やWindows Server 2008 R2も含みます。Windows XP以前は1025~5000でした。
ファイアウォールのルールを変更する必要があるかも知れません。範囲変更は次のコマンドでできます。

netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range

# re: Web サービスを利用する方、TCP リソース制限に注意 2009/09/15 15:58 河端善博
K.Yamachika さん:
 コメントありがとうございます。
 動的ポートが、変更されましたね。
 これで、リソース消費がどのようななったのか・・・
 x64 であれば、だいぶましみたいですね。

コメント

タイトル:
名前:
Url:
コメント: