お世話になります。
【環境】
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つ)に見えております)
以上、よろしくお願いいたします。