SSRS Reports 2008性能优化案例
我们的一个Reporting Service服务上部署了比较多的SSRS报表,其中有一个系统的SSRS报表部署后,执行时间相对较长,加之供应商又在ASP.NET页面里面嵌套了Reporting Service的报表,使得用户对报表响应速度非常不满,于是和几个同事研究了一番如何定位、优化SSRS报表性能。
案例环境:
操作系统 : Windows Server 2008 R2 Standard SP1
数据库版本 : SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
现象描述:
综合了用户、开发人员那边反馈的问题后,发现该SSRS服务器上部署的其它系统的报表响应速度非常快,测试了其中几张报表发现基本在1~3秒内,但是这个系统(模块)的SSRS报表全部比较慢,基本上都8秒以上。而且是第一次访问非常慢,如果刷新或第二次访问非常快,但是如果修改报表URL参数时,也会非常慢。于是我就其中一个报表为例,查看该报表的的执行日志信息,如下所示,我们通过ExecutionLog与Catalog关联查看报表WF_MarkerRoom_Report的执行记录。具体细节可以参考一下Reporting Services 执行和跟踪日志记录。
USE [ReportServer];
GO
SELECT C.Name AS ReportName
,E.ReportID AS ReportID
,E.UserName AS UserName
,E.Format AS Format
,E.Parameters AS Parameters
,E.TimeStart AS TimeStart
,E.TimeEnd AS TimeEnd
,E.TimeDataRetrieval*1.0/1000 AS TimeDataRetrieval
,E.TimeProcessing*1.0/1000 AS TimeProcessing
,E.TimeRendering*1.0/1000 AS TimeRendering
,DATEDIFF(SECOND, TimeStart, TimeEnd)
AS CostTime
FROM ReportServer.dbo.ExecutionLog E WITH(NOLOCK)
INNER JOIN ReportServer.dbo.Catalog C WITH(NOLOCK)ON E.ReportID = C.ItemID
WHERE C.Name ='WF_MarkerRoom_Report'
AND E.TimeStart > CAST('2014-12-25 00:00' AS DATETIME)
AND E.TimeStart <= CAST('2014-12-25 12:00' AS DATETIME)
ORDER BY TimeStart DESC
部分执行结果截图
从上可以看出报表的时间消耗在TimeDataRetrieval上,TimeDataRetrieval是SSRS检索数据、处理报表以及呈现报表所用的毫秒数(SQL里面,我转化为秒),于是我们首先怀疑是报表里面的SQL语句性能问题,于是将报表里面涉及的SQL语句、存储过程全部取出验证测试,结果测试发现所有SQL语句执行时间几百毫秒,没有超过1秒, 这个设想与验证结果有很大出入,于是又怀疑是否因为SSRS报表都是传入存储过程参数获取数据,是否因为“参数嗅探”导致测试结果有差异,于是修改、验证发现依然测试结果不到一秒。于是可以断定问题还是出在SSRS上, 以前碰到过因为安全验证导致过报表超时的案例,但是除了这个模块SSRS报表依然很慢。其它模块报表速度非常快,如果是安全验证问题,应该其它报表速度也会有问题。很是纳闷,也检查了很多设置,依然没有答案。
问题究竟出在哪里呢?经过一番虐心的仔细对比后,居然发现其它模块的报表,在数据源设置上使用SQL认证的方式连接数据库,而这个模块使用的Windows认证方式访问数据库,于是我尝试将报表的数据源连接方式改为一个SQL认证的账号,从 Windows Authentication using a domain account改为SQL Authentication
如上所示,测试SSRS报表的速度结果以及TimeDataRetrieval时间让人吃惊,在官网论坛也有看到讨论:Performance Issue with Shared DataSources using Windows vs SQL Authentication 应该是使用Windows认证方式(Windows Authentication Using a Domain Account)需要涉及加密、域账号认证等消耗了不少时间。 当然,由于对SSRS了解不是非常深入,也没法分析得更深入,在官方文档“性能比较: 安全性设计选择(构建分布式应用程序)”里面,我们可以看到不同的认证方式的Response Time不一样。我想SSRS应该也不例外。
参考资料:
http://msdn.microsoft.com/zh-cn/library/bb934330.aspx
SSRS Reports 2008性能优化案例的更多相关文章
- SSRS Reports 2008性能优化案例二
前几天一同事反映海外工厂A的SSRS报表比较慢,让我检查优化一下.于是我检查了下2015-07-13到2015-07-15 12:00这段时间报表的耗时记录 USE [ReportServer]; ...
- 老李案例分享:Weblogic性能优化案例
老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...
- SQL性能优化案例分析
这段时间做一个SQL性能优化的案例分析, 整理了一下过往的案例,发现一个比较有意思的,拿出来给大家分享. 这个项目是我在项目开展2期的时候才加入的, 之前一期是个金融内部信息门户, 里面有个功能是收集 ...
- Android性能优化案例研究
译 者前言: 这是Google的Android开发工程师Romain Guy刊登在个人Blog上的一篇文章.Romain Guy 作为Android图形渲染和系统优化的专家,是Android 4.1中 ...
- mysql的性能优化案例
在一次项目实现中,以前写了个程序,将在txt文件中的电话号码和对应的类型往数据库中插入,小数据量的情况下,用个数组遍历循环的方式,很容易解决,但是当数据量一下 但是,几十万个电话一次性插入,就变得耗时 ...
- 消息服务dubbo接口性能压测性能优化案例
最近项目中的消息服务做了运营商的改动,导致这个服务做了重新开发 压测脚本如下: 开启200线程压测: tps只有200-300之间,平均耗时在700ms左右 开启500线程压测 500并发压测,发现平 ...
- 一次压测中tomcat生成session释放不及时导致的频繁fullgc性能优化案例
性能问题:老年代一直处于占满状态,为什么没有发生内存溢出 以HotSpot VM的分代式GC为例,普通对象分配都是在young gen进行的,具体是从在位于young gen中的eden space中 ...
- ORACLE实际执行计划与预估执行计划不一致性能优化案例
在一台ORACLE服务器上做巡检时,使用下面SQL找出DISK_READ最高的TOP SQL分析时,分析过程中,有一条SQL语句的一些反常现象,让人觉得很奇怪: SELECT SQL_ID, ...
- web应用性能优化经验总结
常见性能优化要求 在我经历的性能优化案例中,常见的问题都是这样开始的: a) 前台访问很慢,请帮忙分析优化 b) 用户对性能很不满意,再不解决就要投诉 c) 数 ...
随机推荐
- 如何在ios中集成微信登录功能
在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...
- 1Z0-053 争议题目解析688
1Z0-053 争议题目解析688 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 688.Which two statements are true about the compr ...
- 重温JSP学习笔记--JSP动作标签
上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...
- Bootstrap 3.0正式版发布!
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,包含了丰富的Web组件.根据这些组件,开发者可以快速的搭建一个漂亮.功能完备的网站.在经过Bootstrap 3 RC版的测试和 ...
- 重新编译jdk源码,启用debug信息
我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...
- Win10 IoT C#开发 4 - UART 串口通信
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug ...
- 【配置属性】—Entity Framework 对应表字段的类型的设定配置方法
摘自:http://www.cnblogs.com/nianming/archive/2012/11/07/2757997.html Entity Framework Code First的默认行为是 ...
- PHP intval()
定义和用法 获取变量的整数值,允许以使用特定的进制返回.默认10进制 注:如果参数为整数,则不做任何处理. 语法 intval (var, base) 参数 描述 var 必须.可以是任何标量类型. ...
- Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches
Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches 频繁的文件访问会导致系统的Cache使用量大增 $ free -m total used free shared ...