2016-11-25 5 views
4

私は何年も前から数多くのアップデートを経験している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サーバーの再起動だけが行います。任意のアイデアを

おかげで...

+12

を問題を解決しました。コードなしでは、これは推測です – Liam

+0

私はLiamに同意します.SqlConnectionsやsomesuchを閉じたり廃棄したりしていないし、接続プールがいっぱいです。 – DrMistry

+1

エラー10054はピアによる(Winsock)接続のリセットです。接続プール(デフォルトでFirebird ado.netプロバイダが持つ)があり、プール内に50の接続が開いている場合、アプリケーションのクラッシュはソケットを突然終了させ、Firebirdサーバーによってこれらのエラーが記録されるようにします。 Firebird自体は接続制限を課していませんが、Firebird SuperServerはWindows上で最大1024(またはそれより新しいバージョンでは2048)に制限されています。作業バージョンと非稼働バージョンの間の変更を慎重に精査することを提案することができます。 –

答えて

3

おかげで、リアム/ DrMistry /マーク、それが何だったかだ

。不思議な "50"は接続文字列の最大プールサイズです。私が数日間追跡していたバグは、今まで見たことのない最もシンプルなものの1つです.DB接続が行われた行は、と重複したでした。

db.Connect(); 
db.Connect(); 

2番目の接続だけが閉じられたため、すべての要求が1つの接続をlimboに送信し、その結果接続プールが急速に混雑しました。これは、あなたが金曜日の夜のリリースになる場合に起こります!二つの同一ラインの一つを削除

は、私はあなたがあなたの接続を廃棄し、接続プールを限界いっぱいまでされていない想像...もちろん、

関連する問題