我已经安装了一个SQL报告服务器(2008 R2)和一些报告。但我有一些表演问题。
当天对服务器的第一次调用(通过示例进入报告界面)非常慢(最好是30-45秒)。
然后报告生成“快速”(1-2秒)。
下一次对服务器的调用总是很快,直到第二天。我的印象是它在内存中加载了很多东西。但是什么可能需要30-45秒加载到内存???以及如何只加载一次?
服务器足够好(四核,8GB内存,现在从不接近其容量)。
有什么问题?我该如何解决这个问题?
Thoses报告将在一周内启动4-5次,因此如果我无法更改,它们将始终很慢。由于它可供客户使用,我无法让他们理解这一点(报告是通过网站调用的,因此我有可能超时)。
非常感谢
答案 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:
答案 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秒的差异。避免使用任何内联查询。