Тайм-аут отчета служб отчетов

У нас есть отчет за 2005 год, который может составлять от 2 до 250 страниц, причем средний показатель составляет 10 баллов. Когда отчет был разработан, нашему разработчику было сказано, что 10 страниц или около того были правильным числом, и, не зная бизнес-домен очень хорошо, он решил, что службы отчетности - правильный подход.

Теперь, когда отчет был развернут в PROD, у нас есть некоторые жалобы на время выхода отчета. Ни разработчик, ни я на этом не ужасно удивлены, учитывая размер отчета, который запрашивается (250 страниц).

Мой вопрос заключается в том, какие варианты мы должны использовать в нашем текущем отчете, который работает 95% времени и заставляет его работать на оставшиеся 5%? Существуют ли параметры конфигурации в любом месте, чтобы улучшить производительность рендеринга или что-то в этом роде?

Отчет используется для возврата разрешений, поэтому размер возврат может очень. Каждое разрешение страница имеет 4 разных метки возврата с логотипами и штрих-кодами.

Чтобы уточнить:

Отчет выводится довольно быстро из служб отчетов в средство просмотра отчетов, но когда мы экспортируем в PDF, это когда требуется некоторое время для загрузки.

Ответы

Ответ 1

В каждом отчете в SSRS установлен тайм-аут выполнения отчета. По умолчанию они настроены на использование системных параметров по умолчанию, но их можно настроить с помощью диспетчера отчетов или SSMS.

Вы уверены, что это не время ожидания команды базы данных? Это можно настроить в строке подключения. Неэффективен ли отчет или запрос? 250 страниц для отчета SSRS действительно не так уж плохи. Мы часто запускаем отчеты. SSRS фактически превосходит большинство других механизмов отчетности, которые мы используем.

Ответ 2

Вы можете играть в любое из следующих действий:

1) Измените свойства системы SessionTimeout и SessionAccessTimeout.

Вот пример script для rs.exe, который установит эти значения для вас:

Public Sub Main()
    Dim props() as [Property]
    props = new [Property] () { new [Property](), new [Property]() }

    props(0).Name = "SessionTimeout"
    props(0).Value = timeout

    props(1).Name = "SessionAccessTimeout"
    props(1).Value = timeout

    rs.SetSystemProperties(props)
End Sub 

Вы можете запустить этот script с помощью следующей команды:

rs -i sessionTimeout.rss -s http://yourserver.com/reportserver -v timeout="6000"

Тайм-аут выражается в секундах, поэтому этот пример устанавливает SessionTimeout и SessionAccessTimeouts примерно полтора часа.

(через http://blogs.msdn.com/b/jgalla/archive/2006/10/11/session-timeout-during-execution.aspx)

2) Изменить время выполнения отчета отчета через диспетчер отчетов Открыть диспетчер отчетов В верхней части страницы нажмите "Настройки сайта". Откроется страница "Общие свойства" сайта.

Время ожидания выполнения отчета Укажите время обработки отчетов через определенное количество секунд. (через http://msdn.microsoft.com/en-us/library/ms181194.aspx)

3) Установите HttpRuntime ExecutionTimeout

  • Откройте файл ReportServers Web.config, выбрав "Пуск" → "Администрирование" → "Информационные службы Интернета".
  • Затем откройте веб-узлы → Веб-сайт по умолчанию и нажмите на ReportServer. На правой панели щелкните правой кнопкой мыши "Web.Config" и выберите "Открыть".
  • Найдите параметр HttpRuntime. Если он не существует, вам нужно будет создать его в разделе.
  • Задайте для значения executeTimeout значение "10800 (3 часа)", как показано ниже:
<system.web>
    <httpRuntime executionTimeout = "10800" />
</system.web>

4) Увеличьте время ожидания script на сервере отчетов

  • Перейдите на свой сервер отчетов и откройте Internet Information Services; щелкните правой кнопкой мыши на ReportServer и выберите "Свойства".
  • Перейдите на вкладку "Параметры" и установите время ожидания ASP script до 300 секунд (это не помогло мне).

5) Установите отчет, чтобы никогда не выходить на сервер