ASP.NET网站恰好50个请求崩溃



我正在托管ASP.NET Web API,该API已经生产了几年,并且实际上看到了数十个更新。突然之间,在代码中只有较小的更改之后,API在> 50个请求之后崩溃,无论使用哪个浏览器或客户端。Web服务器重新启动立即恢复API的可用性(应用程序池回收没有),但是神秘的倒计时重新开始...

这种奇怪的效果一直存在于几台计算机(Windows Server 2008,Windows Server 2013和Windows 7)以及不同的Web服务器(IIS 7.5,IIS 8.5,Ultidev Web服务器)上。IDE是Visual Studio社区2015;.NET版本为4.5.2。

我没有添加外国API依赖性。我怀疑火鸟(唯一的外部依赖)强加了" 50"的限制,但是我所有的实验和谷歌搜索都是无济于事的。

我可以提取的唯一有用的日志消息说,由于超时错误, db连接失败了。(我使用的是Firebird 2.5 SuperServer X64和Firebird .Net提供商,带有3.0.2版的Firebirdsql.data.data.firebirdclient.dll ,它已经为我服务了。)到DB,并通过弗拉梅宾蛋白浏览。无论如何,一旦我回到上一个API版本,一切都可以正常工作。

崩溃后,先前清除的 firebird.log 包含50个相同的消息:

AB-01234-CD (Server)    Fri Nov 25 14:22:57 2016
    INET/inet_error: read errno = 10054

我已经提到,与独立本地数据库的不同系统之间的问题持续存在。DB备份/还原没有用,就像重新启动火鸟服务一样。只有Web服务器重新启动。

感谢您的想法...

谢谢,liam/drmistry/mark,

就是这样。神秘的" 50"是连接字符串中的最大池大小。我一直在追逐几天的错误是我见过的最简单的错误之一 - DB连接完成的行是重复的。这样:

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

由于仅关闭了第二个连接,因此每个请求都将一个连接发送到了困境,因此连接池很快被拥挤。如果您有机会在星期五晚上发布!

发生这种情况!

删除两个相同行之一解决了问题,当然...

最新更新