c# – ASP.NET网站在完成50个请求后崩溃
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – ASP.NET网站在完成50个请求后崩溃,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1503字,纯文字阅读大概需要3分钟。
内容图文
我正在托管一个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 Server)中持续存在. IDE是Visual Studio Community 2015; .NET版本是4.5.2.
我没有添加外部API依赖项.我怀疑Firebird(唯一的外部依赖)强加了“50”的限制,但我所有的实验和谷歌搜索都无济于事.
我可以提取的唯一一半有用的日志消息说由于超时错误导致数据库连接失败. (我正在使用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服务器重启才能执行.
谢谢你的任何想法……
解决方法:
谢谢Liam / DrMistry / Mark,
就是这样.神秘的“50”是连接字符串中的最大池大小.这几天我追逐的错误是我见过的最简单的错误 – 数据库连接完成的行是重复的.像这样:
db.Connect();
db.Connect();
由于只有第二个连接关闭,每个请求都会将一个连接发送到边界,因此连接池很快就会拥挤.如果您有机会在周五晚上发布会发生这种情况
当然,删除两条完全相同的线条中的一条解决了这个问题……
内容总结
以上是互联网集市为您收集整理的c# – ASP.NET网站在完成50个请求后崩溃全部内容,希望文章能够帮你解决c# – ASP.NET网站在完成50个请求后崩溃所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。