SQL报告服务:第一次调用非常慢

时间:2012-06-26 12:11:36

标签: sql-server reporting-services ssrs-2008

我已经安装了一个SQL报告服务器(2008 R2)和一些报告。但我有一些表演问题。

当天对服务器的第一次调用(通过示例进入报告界面)非常慢(最好是30-45秒)。

然后报告生成“快速”(1-2秒)。

下一次对服务器的调用总是很快,直到第二天。我的印象是它在内存中加载了很多东西。但是什么可能需要30-45秒加载到内存???以及如何只加载一次?

服务器足够好(四核,8GB内存,现在从不接近其容量)。

有什么问题?我该如何解决这个问题?

Thoses报告将在一周内启动4-5次,因此如果我无法更改,它们将始终很慢。由于它可供客户使用,我无法让他们理解这一点(报告是通过网站调用的,因此我有可能超时)。

非常感谢

6 个答案:

答案 0 :(得分:22)

这似乎是一个SSRS问题。您的报告没有任何问题。

SSRS在长时间不活动后第一次访问时需要更多时间加载,这是“正常”。问题是由SSRS的工作方式和SSRS在特定时间段后定期重新启动应用程序域引起的。重新启动应用程序域后,在第一次请求SSRS时,它需要加载所有设置,这需要相当长的时间。

This博客节目是针对这种情况的解决方法

答案 1 :(得分:2)

这是我为修复问题而编写的powershell脚本。它被设置为每凌晨1点运行一次的任务:

Stop-Service "SQL Server Reporting Services (MSSQLSERVER)"
Start-Service "SQL Server Reporting Services (MSSQLSERVER)"
$wc = New-Object system.net.webClient
$cred = [System.Net.CredentialCache]::DefaultNetworkCredentials
$wc.Credentials = $cred
$src = $wc.DownloadString("http://localhost/Reports/Pages/Report.aspx?ItemPath=***NAME OF HOME PAGE***")

答案 2 :(得分:1)

我能提出的最佳解决方案是在Windows服务中使用via windows batch命令向报告的http页面发出'curl'命令。这会在用户进入之前每天早上调整页面。

不再能够访问代码了(工作还不久前),但这个问题显示了如何使用curl:

http://blogs.plexibus.com/2009/01/15/rest-esting-with-curl/

答案 3 :(得分:1)

正如迭戈所说,SSRS存在一些问题。关于服务器配置,第一次调用很慢。我建议您在rsreportserver.config中添加以下配置(如果您不知道在C:\ Program Files \ Microsoft SQL Server \ MSRS10.MSSQLSERVER \ Reporting Services \ ReportServer \中找到)

如果要增加SSRS使用的最大内存:(表示7 GB)

<WorkingSetMaximum>7000000</WorkingSetMaximum>

如果您想改善第一个电话,可以设置(以分钟为单位)

<RecycleTime>4320</RecycleTime>

实际上SSRS有一个重置(循环)时间来清理其缓冲区。默认情况下,它设置为720分钟(12小时),这就是为什么如果你每天早上打开一个报告它实际上加载非常慢。 根据需要,您可以将回收时间设置得更高(2-3天)。我不推荐更长的时间,因为缓冲区将填满,您将只获得空白页面,因此您必须手动重新启动Reporting Services。

答案 4 :(得分:0)

它可能与SQL Server完全无关。尝试查看是否不是代码签名撤销列表检查问题,请参阅Fix slow application startup due to code sign validation

答案 5 :(得分:0)

我将主要查询和页面上的下拉控件转换为从存储过程加载,它在加载过程中产生了5秒的差异。避免使用任何内联查询。