QA@IT
«回答へ戻る

回答を投稿

レス遅くなりました。

1) memoryLimit
memoryLimit の設定に関してはアプリの運用的な設計になるかと思います。この設定値を超えて落とされれば、InProc であればもちろん Session 変数等々は消えてなくなりますから、エラーを取るか or データ消去を取るか、ではないかと。

オンメモリなデータが消えても構わないのであれば、requestLimit を適当に設定して数リクエストさばいたらどんどんリサイクルさせてしまうという手もあると思います。

消えるとマズいのであれば memoryLimit は高めにしてリクエスト流入量自体を絞りこんで使用メモリを抑えるか、既にご検討されているように、メモリを使用しないようにコードを書き直すか(不正にメモリを確保している犯人がいるならそいつを捕まえるか)、になるんじゃないかと思います。

2) GC
パフォーマンスカウンタ .NET CLR Memory の %Time In GC を見ていると、定期的にスパイクすると思います。このタイミングで GC が動いているんだと思います。あまりに大きい領域を確保/開放しまくったり、コードで GC.Collect() しまくってジェネレーションを意図的に古くしない限り、GC が作動しなくなるという事はないんじゃないかなぁと思います。

3) メモリの使用状況
市販のプロファイラ等を使うのがいいのかなぁと思いますが、私はよくわかりません。

なお、パフォーマンスカウンタ .NET CLR Memory の #Total comitted Bytes や #Total reserved Bytes が右肩上がりに上がっていき、それが Workingset と比例しているならマネージドな何かが確保され続けているんだと思います(Web アプリなら、大抵は Session 変数に入れた DataSet なのではないでしょうか)。

それに対して、これらのカウンタはあまり増えていかないのに、パフォーマンスカウンタ Process の Private Bytes が Workingset に比例してどんどん増えているような場合はアンマネージドな何かが確保され続けているんだと思います(COM コンポーネントで使ってる何かがリークしている、とか、ですかね)。

hope it helps
D, an alchemist.

投稿者:D, an alchemist

レス遅くなりました。

1) memoryLimit
memoryLimit の設定に関してはアプリの運用的な設計になるかと思います。この設定値を超えて落とされれば、InProc であればもちろん Session 変数等々は消えてなくなりますから、エラーを取るか or データ消去を取るか、ではないかと。

オンメモリなデータが消えても構わないのであれば、requestLimit を適当に設定して数リクエストさばいたらどんどんリサイクルさせてしまうという手もあると思います。

消えるとマズいのであれば memoryLimit は高めにしてリクエスト流入量自体を絞りこんで使用メモリを抑えるか、既にご検討されているように、メモリを使用しないようにコードを書き直すか(不正にメモリを確保している犯人がいるならそいつを捕まえるか)、になるんじゃないかと思います。

2) GC
パフォーマンスカウンタ .NET CLR Memory の %Time In GC を見ていると、定期的にスパイクすると思います。このタイミングで GC が動いているんだと思います。あまりに大きい領域を確保/開放しまくったり、コードで GC.Collect() しまくってジェネレーションを意図的に古くしない限り、GC が作動しなくなるという事はないんじゃないかなぁと思います。

3) メモリの使用状況
市販のプロファイラ等を使うのがいいのかなぁと思いますが、私はよくわかりません。

なお、パフォーマンスカウンタ .NET CLR Memory の #Total comitted Bytes や #Total reserved Bytes が右肩上がりに上がっていき、それが Workingset と比例しているならマネージドな何かが確保され続けているんだと思います(Web アプリなら、大抵は Session 変数に入れた DataSet なのではないでしょうか)。

それに対して、これらのカウンタはあまり増えていかないのに、パフォーマンスカウンタ Process の Private Bytes が Workingset に比例してどんどん増えているような場合はアンマネージドな何かが確保され続けているんだと思います(COM コンポーネントで使ってる何かがリークしている、とか、ですかね)。


hope it helps
D, an alchemist.


投稿者:D, an alchemist