私は何年も前から数多くのアップデートを経験しているASP.NET Web APIをホストしています。突然コードがわずかに変更された後、ちょうど50リクエストの後にAPIがクラッシュします。どのブラウザまたはクライアントが使用されていても。ASP.NET Webサイトが正確に50リクエスト後にクラッシュする
この奇妙なエフェクトは、複数のマシン(Windows Server 2008、Windows Server 2013、およびWindows 7)に適用されます。異なるWebサーバー(IIS 7.5、IIS 8.5、UltiDev Web Server)にまたがっています。 IDEはVisual Studio Community 2015です。 .NETバージョンは4.5.2です。
私は外部APIの依存関係を追加していません。私はFirebird(その唯一の外部依存関係)の限界を "50"にしていると疑っているが、私の実験とグーグル・グーグルは役に立たなかった。
私が抽出できる半分の有用なログメッセージは、のためにDB接続が失敗したと言いました。 (Firebird 2.5 SuperServer x64とFirebird .NET ProviderをFirebirdSql.Data.FirebirdClient.dllバージョン3.0.2で使用していますが、これまでのところうまくいきました。)しかし、私はDBに接続してそれはFlameRobin経由で。いずれにしても、以前のAPIバージョンに戻るとすべて正常に動作します。私はすでに問題は、独立したローカルデータベースと異なるシステム間で存続することを述べた
AB--CD (Server) Fri Nov 25 14:22:57 2016
INET/inet_error: read errno = 10054
:クラッシュした後
は、以前firebird.logは、このような50件の同一のメッセージが含まれてクリア。 Firebirdサービスを再起動するのと同じように、DBバックアップ/リストアは役に立たない。 Webサーバーの再起動だけが行います。任意のアイデアを
おかげで...
を問題を解決しました。コードなしでは、これは推測です – Liam
私はLiamに同意します.SqlConnectionsやsomesuchを閉じたり廃棄したりしていないし、接続プールがいっぱいです。 – DrMistry
エラー10054はピアによる(Winsock)接続のリセットです。接続プール(デフォルトでFirebird ado.netプロバイダが持つ)があり、プール内に50の接続が開いている場合、アプリケーションのクラッシュはソケットを突然終了させ、Firebirdサーバーによってこれらのエラーが記録されるようにします。 Firebird自体は接続制限を課していませんが、Firebird SuperServerはWindows上で最大1024(またはそれより新しいバージョンでは2048)に制限されています。作業バージョンと非稼働バージョンの間の変更を慎重に精査することを提案することができます。 –