SQL Server Do SSRS report subscriptions that trigger at the same time run concurrently?

inn6fuwd  于 2023-02-28  发布在  其他
关注(0)|答案(3)|浏览(130)

If you have multiple report subscriptions that are set to be triggered at the same time will all of them start at that time and run concurrently? That is, if you have too many reports scheduled for a particular time they run the risk of using up too much system resources and failing?

Do shared subscriptions function differently?

I'm interested in the answer to this for any version of SSRS as my organisation manages environments with SSRS 2005, 2008, 2008 R2, and 2012.

I've tried searching MSDN and google but I haven't been able to find anything definitive. I would imagine that separate schedules all trigger simultaneously and run at once (competing for system resources) because SSRS is designed to run reports on-demand concurrently. But I could imagine scenarios where a shared subscription could queue the reports to run sequentially.

Is there any way to globally limit the number of concurrent report runs that can take place? I know you can limit it on a per-user basis in the RSServerConfig file.

pftdvrlh

pftdvrlh1#

There is a setting in RsReportServer.config called MaxQueueThreads. I often set this to 1 or 2 to avoid flooding the server and crudely save resources for interactive SSRS users. The trade off is that one or two heavy subscription reports can choke the queue and hold up other subscriptions.

It is available in all the versions you listed. Here's the doco:

http://msdn.microsoft.com/en-us/library/ms157273.aspx

mbskvtky

mbskvtky2#

I've found a bit of interesting info that explains how SSRS processes scheduled subscriptions:
When you create a subscription several things are added to the RS server:

  • A row is placed in the Subscriptions table…
  • A row is placed in the Schedule and ReportSchedule tables…
  • A SQL Server Agent job is created…

When the subscription runs several things happen:

  • The SQL Server Agent job fires and puts a row in the Event table…
  • The RS server service has a limited number of threads (2 per CPU) that poll the Event table…
  • When it finds an event, it puts a row in the Notifications table and starts processing…

This if from: Troubleshooting Subscriptions: Part II...

(If I'm reading this correctly...) The reporting service will concurrently run two times the number of cores in your server when processing subscriptions. (e.g. If you have a dual-core machine RS will run 4 report subscriptions at once.)

I'm going to leave this question open awhile long in case anyone else has more information...

laawzig2

laawzig23#

You can analyze what is happening with your report Caching/Subscriptions by querying dbo.ExecutionLog3 . You should be able to filter down to UserName for the NT Service that runs background jobs.

相关问题