Службы SQL Reporting: первый вызов очень медленный - программирование
Подтвердить что ты не робот

Службы SQL Reporting: первый вызов очень медленный

Я установил сервер отчетов SQL (2008 R2) с некоторыми отчетами. Но у меня проблемы с исполнением.

Первый вызов дня на сервер (переход на интерфейс отчета на пример), ОЧЕНЬ медленный (примерно в 30-45 секунд в лучшем случае).

Генерация отчета затем "быстрая" (1-2 секунды).

Следующие вызовы на сервер всегда постится до следующего дня. У меня создается впечатление, что он загружает много вещей в памяти. Но что может занять 30-45 секунд для загрузки в память??? И как загрузить его только один раз?

Сервер достаточно хорош (четырехъядерный процессор, 8 ГБ оперативной памяти, на данный момент он почти не доступен).

В чем проблема? Как я могу это решить?

Отчеты Thoses будут запускаться только 4-5 раз в неделю, поэтому они всегда будут медленными, если я не могу это изменить. И поскольку он доступен для клиентов, я просто не могу заставить их понять это (и отчет вызывается через веб-сайт, поэтому я рискую иметь таймаут).

Большое спасибо

4b9b3361

Ответ 1

t кажется проблемой SSRS. В вашем отчете нет ничего плохого.

Его "нормальный", который SSRS занимает больше времени, чтобы загрузить при первом доступе к нему после длительного времени бездействия. Эта проблема вызвана тем, как работает SSRS, и SSRS регулярно перезапускает домен приложения после определенного периода времени. После перезапуска домена приложения, после первого запроса в SSRS ему необходимо загрузить все настройки, и требуется довольно много времени.

Этот блог показывает работу вокруг ситуации

Ответ 2

Лучшее решение, которое я мог придумать, заключалось в том, чтобы выдать команду "curl" на страницу http отчета, используя командную команду windows в службе Windows. Это запускало страницы каждое утро, прежде чем пользователи вошли.

У вас больше нет доступа к коду (задание было некоторое время назад), но этот вопрос показывает, как использовать завиток:

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

Ответ 3

Как сказал Диего, у SSRS есть некоторые проблемы. Первый вызов медленный, в зависимости от конфигурации вашего сервера. Я рекомендую вам следующую конфигурацию для добавления в rsreportserver.config(если вы не знаете в C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer \)

Если вы хотите увеличить максимальную память, используемую SSRS: (что означает 7 ГБ)

<WorkingSetMaximum>7000000</WorkingSetMaximum>

Если вы хотите улучшить первый вызов, вы можете установить (в минутах)

<RecycleTime>4320</RecycleTime>

Фактически SSRS имеет время reset (рециркуляции), в котором очищается его буфер. По умолчанию он настроен на 720 минут (12 часов), поэтому поэтому, если вы каждый день открываете отчет, он загружается очень медленно. По мере необходимости вы можете установить время возврата выше (2-3 дня). Я не рекомендую больше времени, потому что буфер заполнится, и вы получите только пустые страницы, поэтому вам придется вручную перезапустить службы Reporting Services.

Ответ 5

Здесь приведена статья powershell script, которую я написал для исправления проблемы. Он устанавливается как задача для запуска каждые 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***")