Timeout Quest

I was on an interesting quest today. I had to troubleshoot why some long-running SSRS reports time out after a fixed period of time. An SSRS report can time out for at least three different reasons. First, the dataset query could have been set to time out (see DataSet Query tab). The default query timeout is 30 seconds. You can set the query timeout to 0 to prevent the query from timing out.

Second, the entire report may be set to time out . By default (see the Site Settings page in the Report Manager), all reports are set to time out after 1,800 seconds (30 minutes) but the report timeout can be overridden at the report level by using the report execution properties. When the report timeout is up, the Report Server simply terminates the report.

Finally, if your application calls down to the RS Web service to run a report (the Render API), the web service call may timeout. That’s because in .NET, the web service proxy has a Timeout property.

As usual, as one of the first step of troubleshoot an SSRS issue, I fired up the SysInternals DebugView tracer to watch the output from the Report Server. It turned out that the reports would time out after exactly three minutes. When this happened, the Report Server would gently complain that the ASP.NET thread had terminated without throwing an exception. This led me to believe that this issue was outside the Report Server. After further digging, it turned out that the proxy Timeout was set to 180 seconds. Setting it to -1 solved the problem. Keep in mind though that the IIS could also terminate a long-running report, e.g. if the IIS 6.0 application pool is set to terminate long-running threads.