码迷,mamicode.com
首页 > 其他好文 > 详细

【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)

时间:2015-06-11 20:59:18      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

  1. 客户端js连续发起两个异步http请求,请求地址相同,但参数不同;POST http://*.*.*.*/*****/webservice/RESTFulWebService/RESTFulHandlerForWeb.ashx HTTP/1.1
  2. 服务器端第二方法的响应时间明显很长(不正常),在ProcessRequest方法上增加日志后发现,第二个方法的开始时间明显延迟了大约0.5秒
  3. 后台跟踪发现累计SQL执行时间不超过50毫秒;

技术分享

 

使用log记录应用处理的响应时间(11表示handler方法开始,22表示handler结束),结果发现:两个http请求,从服务器端处理的时间上来看是很短的;

技术分享

 

RedGate分析

通过redgate抓取服务器端的处理堆栈,发现两个http请的处理方式不一样。

第一个请求的处理堆栈如下(这是一个普通的、正常的堆栈):

技术分享

第二个请求额处理堆栈如下(可以看到time队列及sessionState关键字):

技术分享

 

查阅资料显示,如果HttpHandler实现了IRequiresSessionState接口,会导致同一个客户端的并发请求被串行化。解决办法:去掉该接口或改为IReadOnlySessionState

根据堆栈提出找到对应的handler代码,果然实现了该接口,至此问题解决。

技术分享

【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)

标签:

原文地址:http://www.cnblogs.com/zhaoguan_wang/p/4569820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!