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

问题描述:

  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代码,果然实现了该接口,至此问题解决。

时间: 2024-10-10 13:38:27

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

对象的序列化(串行化)分析(一)

对象的序列化(串行化)序列化概念:(1)对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下 来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(persistence).对象通过写出描述自己状 态的数值来记录自己 ,这个过程叫对象的串行化(Serialization-连续) .(2)一个对象随着创建而存在,随着程序结束而结束.那 如果我要保存一个对象的状态呢?Java序列化能够将对象的状态写入byte流存储起来,也从其他

【性能诊断】二、单功能场景的性能分析(fiddler、SQL Profiler)

Fiddler fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,在诊断分析问题时,都有很大的帮助. 下载地址:http://www.telerik.com/download/fiddler 工作原理和使用说明可参考:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html 当然我们如果

【性能诊断】三、单功能场景的性能分析(RedGate Profiler)

上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上.但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉,虽然我们的对应用程序的代码最熟悉. 原因有这么几项: 系统庞大.业务复杂时,如果从代码审查入手,主观性因素影响较大:如果在各处代码中增加log统计响应时间,很不方便.也不科学,且工作量很大: 自己维护的代码调用了其他模块的接口,无从下手:与其他模块同事交流时,描述复杂.沟通困难: Oracle环境不

Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

(转)Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理.解决办法) Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列06之 Vector详细介绍(源码解析)和使用示例 Java 集合系列07之 Stack详细

【性能诊断】一、开篇

在使用.NET进行快速地上手并开发出应用程序后,接下来面临的可能就是系统性能调优方面的问题,尤其是目前的系统大多异常庞大而复杂,性能问题的诊断与调优工作更显得无从下手.一般来说诊断调优工作需要广泛的知识与经验,不单单是代码或SQL的经验,还要对业务逻辑.系统架构设计.应用程序编写.操作系统.网络环境.各种侦测与监控工具.硬件等等,都有基本的了解,才能在复杂的系统中找到症结所在. 记得以前看到过,微软的性能调校文件上标示着各种元素所占的百分比:之前的经验19%.解决问题的能力22%.是否有完备的顾

Wireshark(四):网络性能排查之TCP重传与重复ACK

原文出处: EMC中文支持论坛 作为网络管理员,很多时间必然会耗费在修复慢速服务器和其他终端.但用户感到网络运行缓慢并不意味着就是网络问题. 解决网络性能问题,首先从TCP错误恢复功能(TCP重传与重复ACK)和流控功能说起.之后阐述如何发现网络慢速之源.最后,对网络各组成部分上的数据流进行概况分析.这几张内容将会帮助读者识别,诊断,以及排查慢速网络. 更多信息 接下来的内容,较多是黑白图片了.虽然看起来有点不爽,但还是很值得一看. TCP错误恢复功能: TCP的错误恢复功能是定位,诊断及修复网

性能测试四十五:性能测试策略

1.项目具体需求,及业务场景:关注真实用户会是怎样的一个业务场景,确定用户的用户习惯. 2.指标:响应时间在多少以内,并发数多少,tps多少,总tps多少,稳定性交易总量多少,事务成功率,交易波动范围,稳定运行时长,资源利用率,测哪些交易,哪些接口,测试哪些场景. 3.环境:生产环境服务器数量,测试环境服务器数量,按照资源配比得出测试指标. 4.协议:系统用什么协议进行通讯. 5.压力机数量:如果并发用户数太多,需要把压力发到不同的压力机,不然可能会存在压力机瓶颈问题,导致tps和响应时间抖动.

Oracle性能优化之性能诊断工具_超越OCP精通Oracle视频教程培训33

Oracle性能优化之性能诊断工具_超越OCP精通Oracle视频教程培训33 课程介绍 Oracle视频教程,风哥本套oracle教程培训<<Oracle数据库性能优化培训教程>>的第3/10套:Oracle性能优化之性能诊断工具.主要学习Oracle性能优化,Oracle自带性能诊断工具介绍,日常维护中的性能工具操作过程,awr性能数据的收集时间,awr自动收集性能报告如何实现,awr手工快照如何实现,awr baseline的手工调整与管理,awr性能相关的视图介绍,awr性