1時間ごとに実行されるWindowsサービスにログインします。 Windowsサービスの中でParallel.ForEach
を使用しています。 AdoNetAppenderを使用してSQL Serverデータベースにログインしています。WindowsサービスのLog4netとタスク並列ライブラリ
ILog _log = LogManager.GetLogger(typeof(EmailJob));
上記の行は、静的インスタンスを使用してデータベースにログインしていることを示しています。 AdoNetAppenderでの接続はどのように維持されますか?私のWindowsサービスが最初の反復を完了し、AdoNetAppenderの接続状態はどうなりますか?それは一度に近くになっていますか、ガベージコレクタが処分するのを待っていますか?次の反復が始まると、新しい接続が開きますか?
私のWindowsサービスは常に実行されているので、ガベージコレクタがオブジェクトを処理するのに時間がかかると、開いている接続の数がSQL Serverの最大オープン接続の制限を超えます。反復が終了すると接続を閉じ、反復が開始すると接続を開く必要があります。何をすべきか?
ここに投稿すると、あなたのために緊急の可能性がありますが、それは他の誰にとっても緊急ではありません。 [このコミュニティの議論](http://meta.stackoverflow.com/q/326569/472495)をお読みください。 – halfer