Considering the Configuration File "Sweep" Setting
We
need to consider a setting in the configuration file for Reporting
Services before we can assume that we are really going to obtain an
effective Report Execution Timeout. The RSReportServer.config file is yet another collection of settings whose
importance in the administration of Reporting Services will become obvious
after working with the application for only a brief time. RSReportServer.config
houses a host of settings whose associations include such types as:
-
other report
execution
-
Rendering
-
data
processing
-
event
processing
-
subscription
-
delivery
-
services
-
cache
management
-
session
management
-
web farm /
multi-instance configurations
-
session
management
Of particular interest
from the perspective of this article is the RunningRequestsDbCycle
setting within the RSReportServer.config file. This is what I like to
call a "sweep" setting, because it specifies how often an activity or
characteristic is "evaluated." Specifically, the RunningRequestsDbCycle
setting dictates how frequently the Reporting Services Report Server
evaluates currently running jobs, to ascertain whether these activities have
exceeded the respective Report Execution Timeout setting in effect.
(The "degree of freshness" of executing job information in the Manage
Jobs page is also dependent upon the RunningRequestsDbCycle
setting.)
The RSReportServer.config
file is located in the ReportServer folder of the Reporting Services
installation folder. A common location on many servers might be the following:
C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer
To reinforce our understanding of the setting, let's open
the RSReportServer.config file, and examine the setting we're
discussing:
1.
Right-click Start.
2.
Select Explore to open Windows
Explorer.
3.
Navigate to the RSReportServer.config file (mine is located in the path
shown above).
4.
Right-click
the RSReportServer.config file.
5.
Select Open
With from the context menu that appears.
6.
Select Notepad
from the cascading menu that appears next, as depicted in Illustration 25.
Illustration 25: Select
Open With -> Notepad
RSReportServer.config opens in Notepad.
7.
Select Edit
-> Find from the Notepad main menu.
The Find
utility appears.
8.
Type the
following into the Find What box of the dialog:
RunningRequestsDbCycle
The
completed Find dialog appears as shown in Illustration 26.
Illustration 26: Find
Dialog with Our Input
9.
Click Find
Next.
The Find utility quickly locates the RunningRequestsDbCycle
setting.
10.
Click Cancel to close
the Find utility.
The RunningRequestsDbCycle
setting appears as depicted in Illustration 27.
Illustration 27: RunningRequestsDbCycle
Setting in RSReportServer.config
The
default, which appears in Illustration 27 above, is 60 seconds. While
we will not make changes to the RSReportServer.config file in this
practice session, it is important that we consider how the RunningRequestsDbCycle
value interacts with the Report Execution Timeout setting, and how its
injudicious use might render the Report Execution Timeout setting
ineffective. The setting of this "evaluation sweep" determines how frequently
Report Server performs a comparison between the accumulated processing
time of the report and the Report Execution Timeout value we established
in Site Settings above. If the value of the "sweep" cycle (RunningRequestsDbCycle)
- the "comparison event" - is large enough to contain actual
report run time within it, then report processing will complete regardless of
the Report Execution Timeout.
As an
example, let's say we set the Report Execution Timeout to 20
seconds, and we modify the RunningRequestsDbCycle setting in the RSReportServer.config
file to 45 seconds. Let's further say that the report actually
takes 40 seconds to process. It becomes easy to see how, although the
report has clearly exceeded the Report Execution Timeout limitation, the
event will not be detected if the processing time range occurs "between
sweeps," (which only happen at 45-second intervals. Thus, the difference
between Report Execution Timeout and actual runtime of 20 seconds
(actual run time of 40 seconds less Report Execution Timeout of 20
seconds) is not captured within the interval between sweeps. The overall
effect, therefore, is that the Report Execution Timeout is completely
ignored, because the triggering difference "flies below radar."
Having
met the DBA's expressed requirement for a global timeout limitation of 15
minutes for the general report population, and having discussed the important
(albeit not significant in our present example) consideration of the
interaction between the Report Execution Timeout setting and the RunningRequestsDbCycle
"sweep" interval, we are ready to examine the fulfillment of the
DBA's request that we enable an exception to the global Report Execution
Timeout. We will apply an exception to our clone report in the next
section.
11.
In Notepad, select File ->
Exit, closing RSReportServer.config without making changes.