locked
Windows 2003 ServerでのTCP接続とメモリ(カーネルページプールかつコミットチャージ)との関係について RRS feed

  • 質問

  • お世話になります。

     

    【環境】

    OS:Windows 2003 Server Standard Edition R2 SP2

     

    【通信サーバアプリ概要】

    (1)受信した伝文をファイルにする。

    (2)現在セッションを確立している同一IPから、再度接続要求があった場合の動作には下記の2モードあります。

    ・通常モード:再度接続要求がきたものとセッションを確立し、現在セッションを確立している接続をサーバ側から
    切断(closesocket)する。(同一IPとは1セッションしか許さない)

    ・デバックモード:セッションを確立する。(同一IPと複数のセッションを保持する)

     

    【状況】

    (1)、複数台とTCP(socket)通信を行うサーバアプリを開発しております。

    100台と通信を開始し、タスクマネージャでメモリを監視したところ、

    カーネルページプールは制限値(354Mbyte)の80%あたりまで上昇し張り付いているような状況で、

    コミットチャージも上昇しております。

     

    (2)、テスト用のクライアントプログラム(1000個のセッションをはろうとし(接続できるまで繰り返す)接続後、

    伝文を繰り返し送信する)を使用すると下記のような状況になります。

     

    通常モードだとメモリが上昇。(接続と切断が繰り返され、1個とセッションがはられている状態)

    デバックモードだとメモリは上昇しない。(1000個とセッションがはられている状態)

     

    (3)アプリ単体ではメモリが上昇していない事は確認できております。

     

    【質問】

    (1)TCP接続が1セッション確立されると、OS側(TCP関係)でメモリ資源は確保されるのでしょうか?

     

    (2)状況(2)から、通常モードにてTCPの接続と切断を繰り返すとメモリ使用量が増えるように見えます。

    OS側で接続した時に資源を確保するのだとしたら、切断後、資源はすぐには解放されないのでしょうか?

    また、解放するにはどういう設定がありますでしょうか?(Keep Alive 等?)

    (netstatにて通常モード時にTCP状態を確認しておりますが、正常(1つ)に見えております)


    以上、よろしくお願いいたします。
    2011年2月24日 6:20

すべての返信

  • こんにちは、フォーラムオペレーターの三沢健二です。

    念のためにですが、もし SNP が有効であれば、無効にして変化があるかどうか確認していただければと思います。
    (できればタスクオフロードなどの通信に関連した機能も)

    - 参考情報
    予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか?
    http://blogs.technet.com/b/jpntsblog/archive/2010/03/23/scalable-networking-pack.aspx


    なぜそうなるのかについては、プログラムの内容確認や、その時の状況の解析調査を行った上で判断する必要があるのではと思われますので、可能であれば 弊社有償サポート へご相談される事をお勧めします。
    (状況がよく分かりませんが TIME_WAIT が多いという事でしょうか?)

    補足:
    原因については、上述させていただいたようにちゃんとした調査が必要になると思います。
    ただ、そのような状況(接続と切断が繰り返される) になる事自体が問題かもしれませんので、あくまでも負荷テストが目的であれば話は別ですが、もしかしたらプログラム(システム) の見直しが必要になる可能性もあるのではと思われます。
    MSDN フォーラムなどにご質問されると、開発側の観点でのアドバイスがいただける場合があります)


    それでは、こちらの情報が少しでもお役にたてれば幸いです。

    ______________________________________
    日本マイクロソフト株式会社 フォーラム オペレーター 三沢健二

    • 編集済み 三沢健二 2011年3月3日 1:25 補足追記
    2011年3月2日 7:46