Thursday, March 22, 2012

connection pooling

Hello, I would like to keep my connection from RS to database open all the
time.. I noticed that when I try to render a report for the first time
(called from .aspx page ) it takes a few seconds before it actually executes.
Each report rendered shortly after comes back in no time. I understand this
is related to how connection pooling is being handled.
Could someone please explain how exactly it works. I have a site that
doesn't have much activity, but when someone goes and tries to render report,
I don't want them to get wrong impression that it is slow. I would like to
keep connection between RS and the database alive all the time.. Is that
possible?
Regards,You are seeing an issue with IIS and RS (RS is an asp.net application). This
pause has nothing to do with connection pooling.
There is one solution that people have tried but for whatever reason it did
not do it for me. So I'll tell you what has been said is the solution and
then I'll tell you my hack.
Solution via a poster named Chris:
>>>>>>>>
If you are running Windows 2003 server for your IIS reportserver, then this
is a simple issue - I'll explain what happens:
The report service engine, once it is idle for more than the default 20
minutes, the worker process is shutdown.
This is controlled by IIS.
Open up the Internet Information Services (IIS) Manager
Expand the server node then the application pools.
On my IIS machine, I created an application pool dedicated to the
reportserver & reportmanager virtual webs.
But anyways, for the application pool that the reportserver is pointing to
if you left everything to their defaults will be the DefaultAppPool.
Right click the default app pool and select properties.
There are two things that are checked by default - On the recycling tab
there is a checkbox for recycling worker processes - it is currently set to
1740 minutes (29 hours). Leave it.
The other one is on the performance tab - which is the one you are
interested in changing...
See the "Idle Timeout" section and increase the number of minutes to be 8
hours a typical working day - 8*60 = 480 minutes.
Next, to be sure the "morning person" that runs the first report doesn't get
the delay, set up a schedule for either a dummy or adhoc report to fire off
like at 6am so that the report component worker processes get loaded.
I hope this helps you.
There is no need to have a report fire off every minute to keep things
alive - it is just that the report service was "unloaded" and needed to load
back up.
>>>>>>>>>>>>>>>>>>>
OK, I still ended up doing my hack.
Take a simple report (or make one), set the autorefresh (report->properties)
to 300 seconds. Open this report up and just leave it up. Every five minutes
it will run. This will prevent the problem you are seeing.
I have reports in a folder other people don't use but you could also create
a report just for this and hide it in list view so others don't run it.
Bruce Loehle-Conger
MVP SQL Server Reporting Services
"Lucjan" <Lucjan@.discussions.microsoft.com> wrote in message
news:D2AF4C54-2224-4FF5-8112-F0C8960420BC@.microsoft.com...
> Hello, I would like to keep my connection from RS to database open all the
> time.. I noticed that when I try to render a report for the first time
> (called from .aspx page ) it takes a few seconds before it actually
> executes.
> Each report rendered shortly after comes back in no time. I understand
> this
> is related to how connection pooling is being handled.
> Could someone please explain how exactly it works. I have a site that
> doesn't have much activity, but when someone goes and tries to render
> report,
> I don't want them to get wrong impression that it is slow. I would like to
> keep connection between RS and the database alive all the time.. Is that
> possible?
> Regards,
>
>

No comments:

Post a Comment