加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 对MVC4 Web API性能问题进行故障诊断

发布时间:2020-12-16 06:23:09 所属栏目:asp.Net 来源:网络整理
导读:我有一个asp.net mvc4 web api接口,每天可以获得大约54k个请求. http://myserv.x.com/api/123/getstuff?whatstuff=thisstuff 我在负载均衡器后面有3个Web服务器,用于处理http请求. 平均响应时间约为300毫秒.然而,最近出现了一些错误(或者可能一直存在),因为
我有一个asp.net mvc4 web api接口,每天可以获得大约54k个请求.

http://myserv.x.com/api/123/getstuff?whatstuff=thisstuff

我在负载均衡器后面有3个Web服务器,用于处理http请求.

平均响应时间约为300毫秒.然而,最近出现了一些错误(或者可能一直存在),因为在10-20秒内会出现零星的响应时间.这将是针对直接命中同一服务器而不是通过负载均衡器的相同请求.

GIVEN:
- System has been passed down to me so there may be gaps with IIS confiuration,etc,.
- Database: SQL Server 2008R2
- Web Servers: Windows Server 2008R2 Enterprise SP1
- IIS 7.5
- Using MemoryCache aggressively with Model and Business Objects with eviction set to 2hrs
- Looked at the logs but really don't see anything significantly relevant
- One application pool...no other LOB applications running on this server

假设&问:
不知何故,我认为某些东西正在回收应用程序池,或者IIS工作线程正在关闭并重新启动,从而导致每个新请求进行预热和重新缓存.这是零星的,现在很难解决问题.对同一服务器的相同请求按预期快速返回(背靠背N个请求),因为它在大约300毫秒内缓存….但是等待大约5-10-20分钟,同一个服务器的相同请求需要16秒.

我有限制跟踪,因为这些是prod系统所以我只能暴露这么多的日志记录细节.任何帮助和信息攻击其他人遇到的这种或类似的行为表示赞赏.谢谢

更新:
w3wpe.exe进程增长到~3G.它会以某种方式被消灭,PID会自行改变,或者每隔3-4分钟就会发生一次,我在网络服务器(IIS)日志中看到了大量的警告:

A process serving application pool ‘MyApplication’ suffered a fatal
communication error with the Windows Process Activation Service. The
process id was ‘1732’. The data field contains the error number.

解决方法

在评估IIS和配置与内部代码问题4-5天之后,我终于发现了这个问题,对windbg或debugdiag IIS工具几乎没有帮助.这些工具包含很多信息,即使是迷你转储或日志跟踪堆栈,它们也可以是红色鲱鱼.最好的办法是通过设置一个生产系统的“智能复制”实例来重现它,这是我们当时没有的,并且需要一些操作来设置一些东西.

不用说,问题与过度缓存业务对象有关.有一种竞争条件,某个表上的更新正在更新相应业务对象的属性(更新来自多个服务器),这导致OOC堆栈溢出,这几乎导致缓存以递归方式缓存自身死亡,从而导致w3wp .exe进程死亡和伪造回收本身.这是在非生产环境中难以测试和重新编写的边缘情况之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读