我正在托管一个ASP.NET Web API,它已经在生产中运行了几年,已经经历了几十次更新。突然之间,在代码只进行了轻微更改后,无论使用哪个浏览器或客户端,API在恰好50个请求后崩溃。Web服务器重启立即恢复API的可用性(应用程序池重置不起作用),但神秘的倒计时重新开始...
这种奇怪的现象在几台机器(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,其中包含版本为3.0.2的FirebirdSql.Data.FirebirdClient.dll,在这之前一直表现良好。)不过,我可以通过FlameRobin连接到数据库并浏览它。无论如何,只要回到先前的API版本,一切都运行正常。
崩溃后,以前清除的firebird.log包含50个相同的消息,如下所示:
我已经提到该问题在使用独立本地数据库的不同系统中仍然存在。备份/还原数据库以及重启Firebird服务都是无效的。只有重新启动Web服务器才能解决该问题。
感谢任何想法...
这种奇怪的现象在几台机器(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,其中包含版本为3.0.2的FirebirdSql.Data.FirebirdClient.dll,在这之前一直表现良好。)不过,我可以通过FlameRobin连接到数据库并浏览它。无论如何,只要回到先前的API版本,一切都运行正常。
崩溃后,以前清除的firebird.log包含50个相同的消息,如下所示:
AB-01234-CD (Server) Fri Nov 25 14:22:57 2016
INET/inet_error: read errno = 10054
我已经提到该问题在使用独立本地数据库的不同系统中仍然存在。备份/还原数据库以及重启Firebird服务都是无效的。只有重新启动Web服务器才能解决该问题。
感谢任何想法...