SQLレポートサーバー(2008 R2)といくつかのレポートをインストールしました。しかし、パフォーマンスの問題がいくつかあります。
サーバーへのその日の最初の呼び出し(例としてレポートインターフェイスを使用)は、非常に低速です(せいぜい30〜45秒程度)。
この場合、レポート生成は「高速」です(1〜2秒)。
サーバーへの次の呼び出しは、翌日まで常に高速です。私はそれが多くのことをメモリにロードするという印象を持っています。しかし、メモリにロードされるのに30〜45秒かかりますか?そして、それを一度だけロードする方法は?
サーバーは十分です(クアッドコア、8GBのRAM、現時点ではその容量に近づいていません)。
何が問題ですか?どうすれば解決できますか?
それらのレポートは週に4〜5回しか起動されないため、これを変更できない場合は常に遅くなります。そして、顧客が利用できるので、私は彼らにこれを理解させることができません(そして、レポートはウェブサイトを通して呼び出されるので、タイムアウトするリスクがあります)。
どうもありがとうございました
SSRSの問題のようです。レポートに問題はありません。
SSRSを長時間非アクティブにした後、SSRSに最初にアクセスするときに読み込む時間が長くなるのは「通常」です。この問題は、SSRSがどのように機能し、SSRSが特定の期間後にアプリケーションドメインを定期的に再起動する方法が原因で発生します。アプリケーションドメインを再起動した後、SSRSへの最初の要求時にすべての設定を読み込む必要があり、非常に長い時間がかかります。
これ ブログショーの状況の回避策
問題を修正するために作成した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***")
私が思いついた最良の解決策は、Windowsサービスでwindows batchコマンドを使用して、レポートのhttpページに「curl」コマンドを発行することでした。これにより、ユーザーがアクセスする前に毎朝ページが表示されました。
コードにはもうアクセスできません(ジョブは少し前です)が、この質問はcurlの使用方法を示しています。
ディエゴが言ったように、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とはまったく関係ない場合があります。コード署名失効リストのチェックの問題ではないかどうかを確認してください。 コード署名の検証によるアプリケーションの起動の遅延を修正