我Windows2012r2上用iis代理的asp.net core,能够正常访问,但是经常性的在下午的3点左右不好说具体几分,都会崩20分钟,先是停止响应,然后访问页面一直响应,大概20分钟左右就会正常,那时候没有什么用户,程序log日志也没有显示具体错误。有大神遇到过这种情况吗,在本地怎么测都没事,在托管上只能晚上修改测试,但是都正常,只有三点左右那一段时间不行,停止iis程序池再启动也是一样的
还有一个问题是,我把进程和网站都停了之后再启动,还是不行,浏览器中等待状态,差不多也得20分钟,自己启动进程的exe文件访问localhost能访问。。性能监视器中崩溃的时候活动请求数慢慢的涨。。我觉得应该是堵塞了,但是数据库能访问,而且我们的网站有https;同一服务器下的另一测试页面,使用统一数据库,在崩溃的时候,访问测试页面提示500.
更换备用服务器,
程序中有没有在同步方法中调用异步方法的代码?
有的,在本地没事,但是上线之后就算是基本上都是三点左右出问题,响应20分钟
@juxue: 应该就是这个原因,我们有血的教训,问题会在一定并发请求的情况下出现
@dudu: 但是技术那边说,有,但是不多。我让他试试,但是我们一般并发量高的时候没出现,就是三点那片,那时候网站基本上都是我们自己员工用
@dudu: 这个死锁的现象是什么,和我反馈我们的情况一样吗?
@dudu: 他应该是某些特定请求触发就会发生死锁对吗,而不是高并发,因为我们出现状况的时候并没有多少并发。。
@juxue: 问题会在一定并发请求的情况下出现,并不一定是高并发,是整个线程池被死锁
@dudu: 还有一个问题是,我把进程和网站都停了之后再启动,还是不行,浏览器中等待状态,差不多也得20分钟,自己启动进程的exe文件访问localhost能访问。。
@dudu: 问题中程序的目标运行时是 .net4.6.1 不是 .net core , 环境中的.net 版本 为 .net47x(1 或者 2) (仍然是 Asp.net core ,没有同步上下文), 问题有点像 IIS 没把 请求发送给 我们的程序 (或者 请求不完整, 随着 内存的不断升高大概到 600M, 最终才运行)
@John0King: 用的是自己的服务器还是云服务器
@dudu: 自己的服务器, 出问题的时候 什么错误都没有 (NLog 日志), ANCM 也不报错(windows 事件中) , 最重要的是, 重启 网址 和 进程 还是起不来(进程起来了,就是不响应), 如果是 程序的问题, 把进程 kill 应该就正常才对。 在 我们 内部的测试服务器上 ,一点也没问题
@John0King: 建议使用 Wireshark 抓包看一下是不是网络问题引起的
再另外部署同一套代码,看看是不是也出现相同的问题,起码可以排除是代码的问题还是环境的问题
正有这个打算试试,之前都是在本地试的,我今天打算在外网上试试,另外它的线程有1000多
是不是有定时的任务在执行,导致数据库堵塞。
我用本地连外网的数据库,是好好的,就在网站程序挂掉的时候
在程序启动的时候多写点日志看看
数据库连接是否关闭,数据库锁,同步方法中调用异步方法的的时候使用 “Nito.AsyncEx” https://github.com/StephenCleary/AsyncEx 来解决未响应问题
我也考虑过,但是同样连接此数据库的网站正常访问,这是否说明数据库正常?
查看服务器 事件不就完事了