プロダクション環境でC#.NETサービスを実行しています。このサービスは、クライアントが登録して要求を行うTCPサーバーとして機能します。タスクマネージャーを見ると、約10MB /日が漏れているようです。私はdevに気付いていないようです(たぶんトラフィックやクライアントのアクティビティがはるかに少ないためです)。私は周りの検索では、タスクマネージャーが深刻に間違っていることがありますが、私はどのくらい正確か、どのような状況でTMが間違った情報を表示するのかよく分かりません。.NETプロダクションサービスでメモリリークをターゲットにする
この問題を解決するには、メモリ消費量をより詳細に監視する必要があります。問題は、リリースされたサービスがリリース用にビルドされている本番環境でのみリークが発生するように見えることです。また、プロファイラー/デバッグが付いたVSで直接実行できないサービスなので、TMより正確な問題をどのように正確に突き止めるべきかはわかりません。
どのグループの知恵は、ありがとう、ありがとう。
編集:私はサービスの陰部のバイトのためのperfmonカウンタを追加しました
- (30メガバイトが出て起動する)
- タスクマネージャを(7メガバイトはアウト開始します)だけでなく、すべてのヒープ内のCLR MEMメモリ全体が〜37MBであると言いますので、これは意味をなさないと思われます。
- これの最初の部分は、サービスを1日かけて、もう一度私のカウンタをチェックアウトさせることです。
私のプライベートバイトが大きくなりますが、CLR memが大体静的である場合、これはアンマネージドリークを示します。両方が巨大になると、管理漏れです。
ありがとうございます。
リリースビルドをテスト/ステージングで実行して、リークを再現できるのはなぜですか?これはステップ1です。リークを特定するには、ステップ2(メモリプロファイラを使用)が必要です。 – Oded
私はこれをしました。残念ながら、トラフィックの量は、dev側では、一桁の大きさです。だから、漏れはそれほど明白ではない。 – kmarks2