0

私はメモリオーバーフローを処理する方法や解決策を探しています。メモリがオーバーフローしたとき、またはある値を超えたときにサービスを再起動する可能性があります。それが死ぬ前にいくつかの仕事をしてください。

これは正常な状況ではなく、すべてのエラーがメモリオーバーフローを修正する必要があることを私は知っていますが、問題が発生した後、サービスが回復することを確信する必要があります。

UPD 私はWindowsサービスを持っています。このサーバーは、クライアントからの多くの接続を受け入れます。クライアントは、メモリ消費につながるいくつかのアクションを実行します。リークするのではなく、クライアントの要求を処理するためにメモリを消費するだけです。ある時点(ピーク負荷)では、RAMが十分ではありません。これは大きな問題ではありません。問題は、最初のメモリオーバーフロー後、例外サービスが何も処理できないことです。メモリオーバーフロー例外でいっぱいのログがあります。自己再起動せず、クライアント要求を処理せず、この状態を終了しません。

サービスのこの状態を終了する方法を見つけたいだけです。サービスを再開できない場合。そのような状態を予測することが可能であれば。

最初の方法はクライアントを制限することですが、一部のクライアントが大量のメモリを消費することは保証されていません。

危険なメモリ消費を検出して新しいクライアントの処理を停止したり、正しく再起動したりすることは可能ですか?メモリがなくなった場合、サービスをセルフリスタートすることは可能ですか?

4

1 に答える 1

1

メモリ オーバーフローは、追跡/対処が非常に困難です。ほとんどの場合、何らかのメモリ リークが発生しています。.NET でメモリ リークが発生する可能性は依然としてあります。使用されなくなったリソースを排除するためにガベージ コレクションが機能する管理された環境で作業しているため、プログラミング レベルでメモリ オーバーフローを自分で処理することはできません。最善の方法は、メモリ リークを防ぐことです。メモリ消費量が高くなったときにサービスを再起動する場合は、Windows 用の非常に包括的なインストルメンテーションである Microsoft SCOM などの管理パッケージを使用する必要があります。

これらのスレッドも確認 してくださいC# でのメモリ リーク

http://crazorsharp.blogspot.com/2009/03/net-memory-leaks-it-is-possible.html

それが役立つことを願っています

于 2013-02-20T16:51:27.057 に答える