■問題
当方、アプリケーションの開発を行っております。
アプリケーション自体はリリースを完了し、客先環境にて動作中でありますが、OS起動から数週間でアプリケーションに問題が発生し、動作しないという報告を受けたため、調査を行った結果winsock通信のsocketクラス作成時にWSAENOBUFSエラーが発生しておりました。
このエラーの原因は下記2つだと思います。
①空きポートが無くなった(デフォルトでは5000番を超えるポートを使用する事ができない)
②winsockが使用するバッファ空き容量が不足している
①についてはnetstatにて空きポートのチェックを行う予定ですが、②の問題の調査方法についてどのように行えばよいか教えて頂けないでしょうか
OSのSupport
Toolsであるpoolmon.exeを使用するようmicrosoftの記事を見つけましたが、実行したところどの値をどのように監視すればよいのかわかりません。
今回の問題においてpoolmon.exeに表示されるどの値を監視し、値がどのように変化しているからメモリリークを起こしているまたは、メモリ空き容量が不足していると判断すればよいかご存知の方がいましたら宜しくお願い致します。
以上
ご質問に対する回答にはなりませんが、「メモリリーク」と「Winsock」と
いったキーワードで、昔の経験を思い出しましたので。。
> 当方、アプリケーションの開発を行っております。
どういった開発言語で、どのようなアプリケーションの作りになっている
のかわかりませんが、下記文書のような問題に該当するようなことはあり
ませんでしょうか?
# 2003 Server 上でも発生するのかどうか存じませんが...
・[BUG] Winsock コントロールがアンロードされるときにメモリ リークが発生する
http://support.microsoft.com/default.aspx/kb/171843/ja
--
へーいち <pub...@heiichi.com>
> > 当方、アプリケーションの開発を行っております。
> どういった開発言語で、どのようなアプリケーションの作りになっている
> のかわかりませんが、下記文書のような問題に該当するようなことはあり
> ませんでしょうか?
> # 2003 Server 上でも発生するのかどうか存じませんが...
>
> ・[BUG] Winsock コントロールがアンロードされるときにメモリ リークが発生する
> http://support.microsoft.com/default.aspx/kb/171843/ja
私共がリリースしたアプリケーションの開発言語はVisualStudio.Net2003(C#)です。
現在客先環境には私共がリリースしたアプリケーションの他に動作しているアプリケーションはMcAfeeVirusScanになります。
正直、現在は私共のアプリケーションに問題があるとは考えていません。
その理由は下記記事によるものでこれらが原因ではないかと考えています。
・http://support.microsoft.com/kb/917114/
・http://support.microsoft.com/kb/888928/ja
最終的にはどこに問題があるかわからないのですが、客先に説明するためまずwinsockが使用するカーネルメモリがリークを起こしていないかを調査し、リークを起こしているので、これこれこういう対策を行いましょうという事にしたいと考えています。
とりあえず対策としてはSP2とVirusScanの最新パッチ適用ということになると思いますが
自信で調べましたがカーネルが使用しているTCP/IPのドライバファイルはadf.sysなようで、poolmon.exeにでadf関係のbytesの増加をチェックすればよいのかなと考えていますが合っているでしょうか?
右肩上がりに上昇すれば問題だと思うのですが、メモリの最大値がわからないため、この値を超えてはいけないという判断ができません。
ご教授願えないでしょうか
以上