【问题标题】:SQL Reporting services: First call is very slowSQL 报告服务:第一次调用很慢
【发布时间】:2012-06-26 12:11:36
【问题描述】:

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

一天中第一次调用服务器(以报表界面为例)非常慢(最多 30-45 秒)。

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

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

服务器已经足够好了(四核,8GB 内存,暂时还没有达到它的容量)。

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

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

非常感谢

【问题讨论】:

  • 执行计划如果有一段时间没有被使用就会被踢出。

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


【解决方案1】:

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

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

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

【讨论】:

  • 我目前正在尝试这个解决方案,我明天看看它是否有效:)
  • :) 今天早上我真的很开心,因为它奏效了!你知道为什么 SSRS 需要定期重启应用域吗?
  • @Diego 此链接不再有效。解决方法是否已在任何地方重新发布?
  • 那个博客是最好的解决方案,但他的脚本需要修改。而不是点击 Folder.aspx,您应该点击一个实际页面,请参阅下面的回复:
  • @SCalice- 我没有发现我必须点击一个实际的项目。原始脚本按广告宣传。
【解决方案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***")

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      正如 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。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 我试着把那两个注册表放了,但是没有用,今天早上我测试了,同样的问题。
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-12
          • 1970-01-01
          • 1970-01-01
          • 2017-05-23
          • 2012-02-17
          • 1970-01-01
          相关资源
          最近更新 更多