19

我已经安装了 SQL 报告服务器 (2008 R2),其中包含一些报告。但我有一些性能问题。

当天对服务器的第一次调用(例如在报告界面上进行)非常慢(充其量是 30-45 秒)。

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

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

服务器足够好(四核,8GB 内存,目前从未接近其容量)。

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

那些报告将在一周内仅发布 4-5 次,因此如果我无法更改,它们将总是很慢。而且由于它可供客户使用,我只是无法让他们理解这一点(并且报告是通过网站调用的,所以我冒着超时的风险)。

非常感谢你

4

6 回答 6

24

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

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

这个博客节目是解决这种情况的方法

于 2012-06-26T14:25:30.773 回答
2

这是我为解决问题而编写的 powershell 脚本。它被设置为每天凌晨 1:00 运行的任务:

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***")
于 2016-04-25T20:34:53.017 回答
1

我能想出的最佳解决方案是使用 windows 服务中的 windows 批处理命令向报告的 http 页面发出“curl”命令。这在用户进来之前每天早上都会运行页面。

不再有权访问代码(工作是前一段时间),但这个问题显示了如何使用 curl:

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

于 2012-06-26T12:14:55.860 回答
1

正如 Diego 所说,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。

于 2014-07-23T21:27:53.533 回答
0

它可能与 SQL Server 完全无关。试试看是否不是代码签名撤销列表检查问题,请参阅修复由于代码签名验证导致的应用程序启动缓慢

于 2012-06-26T12:26:14.423 回答
0

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

于 2018-05-21T15:11:45.083 回答