Showing posts with label reports. Show all posts
Showing posts with label reports. Show all posts

Friday, March 30, 2012

Peduliar problem in SSRS

Hi all ,

I am encountering a peculiar problem while creating a linked report in SSRS.

The scenario:

My first reports contains 3 columns . The first 3 columns contain data from vendor table in AdventureWorks DB. They are VendorID , Name, CreditRating. The fourth column contains a link to the second report. It is just a link which jumps to the other report and passes the above three values as parameters to the second report.

The second report contains 4 parameters which includes VendorID , Name, CreditRating and one more Postedby parameter which has to be entered manually when the second report is displayed. The three parameters from first report are passed on and one extra parameter has to entered manually then only the second report displays.

It works fine when I check it on Visual Studio preview mode. I click the link for a particular row in First Report and it asks me to enter the Postedby Parameter. After entering it it displays the 2nd report. But the problem arises when I deploy it to report server. When I click the link on first report it throughs an error like " The Parameter 'PostedBy' is missing a value" whereas it should prompt the user to enter the PostedBy Parameter.

I am stuck in this and not able to understand why this happens in ReportServer and not in Visual Studio Preview mode.

Does anybody has any idea why this is happening ?

Any Suggestion will be appreciated.

Regards...

Girija Shankar Beuria

You must specify the default value for the fourth parameter. Visual Studio is an interactive environment, so you get to enter the value on request by the VS. But in production environment, reports are consumed by other applications and the report will not be able to request for an input from the calling application and this applies to Report Manager also which is an external web application that consumes the reporting services.

Shyam

|||

just go to the code and see if there is any parameter hard coded in xml.

Remove that parameter and save it .

This will probably solve your problem.

Vamsi Krishna Korasiga

Wednesday, March 28, 2012

PDF Rendering: What about metadata and security?

Is there any way when rendering reports into PDF, to specify metadata such
as Title, Author, Subject and Keywords? And... what about security
properties? Allow/Prevent document printing / changing document / extract
contents / etc.
Regards.Sorry, this is not supported.
-- Robert
This posting is provided "AS IS" with no warranties, and confers no rights.
"David Lightman Robles" <dlightman@.NOSPAMiname.com> wrote in message
news:O7tIKwLTFHA.4056@.TK2MSFTNGP15.phx.gbl...
> Is there any way when rendering reports into PDF, to specify metadata such
> as Title, Author, Subject and Keywords? And... what about security
> properties? Allow/Prevent document printing / changing document / extract
> contents / etc.
> Regards.
>|||Is it expected to be supported on SQL Server 2005 version of Reporting
Services?
Regards.
"Robert Bruckner [MSFT]" <robruc@.online.microsoft.com> escribió en el
mensaje news:%23WXtIyTTFHA.2548@.TK2MSFTNGP14.phx.gbl...
> Sorry, this is not supported.
>
> -- Robert
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
> "David Lightman Robles" <dlightman@.NOSPAMiname.com> wrote in message
> news:O7tIKwLTFHA.4056@.TK2MSFTNGP15.phx.gbl...
>> Is there any way when rendering reports into PDF, to specify metadata
>> such as Title, Author, Subject and Keywords? And... what about security
>> properties? Allow/Prevent document printing / changing document / extract
>> contents / etc.
>> Regards.
>>
>|||No. It is under consideration for a future release.
Nonetheless, in the meantime ISVs could implement their own custom PDF
rendering extension which supports it. Or you could look into a custom
solution with post processing of the PDF files e.g. using SDKs for changing
PDF files.
--
This posting is provided "AS IS" with no warranties, and confers no rights.
"David Lightman Robles" <dlightman@.NOSPAMiname.com> wrote in message
news:OjY5Sv6TFHA.2420@.TK2MSFTNGP12.phx.gbl...
> Is it expected to be supported on SQL Server 2005 version of Reporting
> Services?
> Regards.
> "Robert Bruckner [MSFT]" <robruc@.online.microsoft.com> escribió en el
> mensaje news:%23WXtIyTTFHA.2548@.TK2MSFTNGP14.phx.gbl...
>> Sorry, this is not supported.
>>
>> -- Robert
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>> "David Lightman Robles" <dlightman@.NOSPAMiname.com> wrote in message
>> news:O7tIKwLTFHA.4056@.TK2MSFTNGP15.phx.gbl...
>> Is there any way when rendering reports into PDF, to specify metadata
>> such as Title, Author, Subject and Keywords? And... what about security
>> properties? Allow/Prevent document printing / changing document /
>> extract contents / etc.
>> Regards.
>>
>>
>sql

PDF Rendering troubles

Hi all. I wont create template for my reports with header include logotype
and name of the reports. Logotype and name included to box with green color,
i wont that this box will have 100% width. i set 21 cm width as A4 format
next i create my report use this template and deploy it to RS server. On Rs
server my report look correct, but if i import it to PDF, PDF file render my
header with left and right margins. How i can correct this problem ?
Thank you.Set report margings to 0in
"dmitri" wrote:
> Hi all. I wont create template for my reports with header include logotype
> and name of the reports. Logotype and name included to box with green color,
> i wont that this box will have 100% width. i set 21 cm width as A4 format
> next i create my report use this template and deploy it to RS server. On Rs
> server my report look correct, but if i import it to PDF, PDF file render my
> header with left and right margins. How i can correct this problem ?
> Thank you.

PDF rendering bug in SP2

We just upgraded to SP2 and some reports now fail to render in PDF format. They render successfully as HTML within IE, but exporting to PDF gives the following error:

An error occurred during rendering of the report. (rrRenderingError)

An error occurred during rendering of the report.

Non-negative number required. Parameter name: value

The log gives the following traceback:

at Microsoft.Reporting.WebForms.ServerReport.InternalRender(String format, String deviceInfo, String& extension, String& mimeType, String& encoding, String[]& streams, Warning[]& warnings)
at Microsoft.Reporting.WebForms.ServerReport.Render(String format, String deviceInfo, NameValueCollection additionalParams, String& mimeType, String& extension)
at Microsoft.Reporting.WebForms.ServerReportControlSource.RenderReport(String format, String deviceInfo, NameValueCollection additionalParams, String& mimeType, String& fileExtension)
at Microsoft.Reporting.WebForms.ExportOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response)
at Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
aspnet_wp!library!6!17/04/2007-10:27:17:: i INFO: Cleaned 0 batch records, 0 policies, 0 sessions, 0 cache entries, 0 snapshots, 0 chunks, 0 running jobs, 0 persisted streams
aspnet_wp!library!5!17/04/2007-10:28:09:: i INFO: Call to RenderNext( '/EFaultReports/FaultReport' )
aspnet_wp!cache!5!17/04/2007-10:28:09:: i INFO: Session live: /EFaultReports/FaultReport
aspnet_wp!library!5!17/04/2007-10:28:23:: i INFO: Call to RenderNext( '/EFaultReports/FaultReport' )
aspnet_wp!reportrendering!5!17/04/2007-10:28:23:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: An error occurred during rendering of the report., ;
Info: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: An error occurred during rendering of the report. > Microsoft.ReportingServices.ReportRendering.ReportRenderingException: An error occurred during rendering of the report. > System.ArgumentOutOfRangeException: Non-negative number required.
Parameter name: value
at System.IO.MemoryStream.set_Position(Int64 value)
at Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.MonochromeJpeg(MemoryStream memStream)
at Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.ProcessImage(CanvasImagePDF image, Double left, Double top, Double width, Double height, Boolean scaleImage)
at Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.DrawImage(OutlineObjects outlines, CanvasImage image, Double left, Double top, Double width, Double height)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Image.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Table.TableCell.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Table.TableRow.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Table.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Rectangle.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRendererBase.ProcessPages(CompositionBase theComposition, Report theReport, Boolean needTotalPages, Int32 startPage, Int32 endPage, Boolean render)
at Microsoft.ReportingServices.Rendering.ImageRenderer.PdfReport.RenderReport(Report report, NameValueCollection deviceInfo, EvaluateHeaderFooterExpressions evaluateHeaderFooterExpressions, CreateAndRegisterStream createAndRegisterStreamCallback, Int32 streamPageNumber)
at Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRendererBase.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, EvaluateHeaderFooterExpressions evaluateHeaderFooterExpressions, CreateAndRegisterStream createAndRegisterStream)
End of inner exception stack trace
at Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRendererBase.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, EvaluateHeaderFooterExpressions evaluateHeaderFooterExpressions, CreateAndRegisterStream createAndRegisterStream)
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.RenderSnapshot(IRenderingExtension renderer, CreateReportChunk createChunkCallback, RenderingContext rc, GetResource getResourceCallback)
End of inner exception stack trace
aspnet_wp!library!5!17/04/2007-10:28:23:: Unhandled exception was caught: Microsoft.Reporting.WebForms.ReportServerException: An error occurred during rendering of the report. (rrRenderingError) > Microsoft.Reporting.WebForms.ReportServerException: An error occurred during rendering of the report. > Microsoft.Reporting.WebForms.ReportServerException: Non-negative number required.
Parameter name: value
End of inner exception stack trace
End of inner exception stack trace

Hi

We have got same problem and I have found that it happens with reports containing *.pjpeg images. Not all *.pjpeg gives this problem.

Please reply if anyone knows the fix. it is urgent

Thanks

Satjinder

sql

PDF rendering bug in SP2

We just upgraded to SP2 and some reports now fail to render in PDF format. They render successfully as HTML within IE, but exporting to PDF gives the following error:

An error occurred during rendering of the report. (rrRenderingError)

An error occurred during rendering of the report.

Non-negative number required. Parameter name: value

The log gives the following traceback:

at Microsoft.Reporting.WebForms.ServerReport.InternalRender(String format, String deviceInfo, String& extension, String& mimeType, String& encoding, String[]& streams, Warning[]& warnings)
at Microsoft.Reporting.WebForms.ServerReport.Render(String format, String deviceInfo, NameValueCollection additionalParams, String& mimeType, String& extension)
at Microsoft.Reporting.WebForms.ServerReportControlSource.RenderReport(String format, String deviceInfo, NameValueCollection additionalParams, String& mimeType, String& fileExtension)
at Microsoft.Reporting.WebForms.ExportOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response)
at Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
aspnet_wp!library!6!17/04/2007-10:27:17:: i INFO: Cleaned 0 batch records, 0 policies, 0 sessions, 0 cache entries, 0 snapshots, 0 chunks, 0 running jobs, 0 persisted streams
aspnet_wp!library!5!17/04/2007-10:28:09:: i INFO: Call to RenderNext( '/EFaultReports/FaultReport' )
aspnet_wp!cache!5!17/04/2007-10:28:09:: i INFO: Session live: /EFaultReports/FaultReport
aspnet_wp!library!5!17/04/2007-10:28:23:: i INFO: Call to RenderNext( '/EFaultReports/FaultReport' )
aspnet_wp!reportrendering!5!17/04/2007-10:28:23:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: An error occurred during rendering of the report., ;
Info: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: An error occurred during rendering of the report. > Microsoft.ReportingServices.ReportRendering.ReportRenderingException: An error occurred during rendering of the report. > System.ArgumentOutOfRangeException: Non-negative number required.
Parameter name: value
at System.IO.MemoryStream.set_Position(Int64 value)
at Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.MonochromeJpeg(MemoryStream memStream)
at Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.ProcessImage(CanvasImagePDF image, Double left, Double top, Double width, Double height, Boolean scaleImage)
at Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.DrawImage(OutlineObjects outlines, CanvasImage image, Double left, Double top, Double width, Double height)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Image.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Table.TableCell.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Table.TableRow.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Table.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.Rectangle.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.RenderingItemContainer.RenderToPage(Measurement parentClipBorder)
at Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRendererBase.ProcessPages(CompositionBase theComposition, Report theReport, Boolean needTotalPages, Int32 startPage, Int32 endPage, Boolean render)
at Microsoft.ReportingServices.Rendering.ImageRenderer.PdfReport.RenderReport(Report report, NameValueCollection deviceInfo, EvaluateHeaderFooterExpressions evaluateHeaderFooterExpressions, CreateAndRegisterStream createAndRegisterStreamCallback, Int32 streamPageNumber)
at Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRendererBase.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, EvaluateHeaderFooterExpressions evaluateHeaderFooterExpressions, CreateAndRegisterStream createAndRegisterStream)
End of inner exception stack trace
at Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRendererBase.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, EvaluateHeaderFooterExpressions evaluateHeaderFooterExpressions, CreateAndRegisterStream createAndRegisterStream)
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.RenderSnapshot(IRenderingExtension renderer, CreateReportChunk createChunkCallback, RenderingContext rc, GetResource getResourceCallback)
End of inner exception stack trace
aspnet_wp!library!5!17/04/2007-10:28:23:: Unhandled exception was caught: Microsoft.Reporting.WebForms.ReportServerException: An error occurred during rendering of the report. (rrRenderingError) > Microsoft.Reporting.WebForms.ReportServerException: An error occurred during rendering of the report. > Microsoft.Reporting.WebForms.ReportServerException: Non-negative number required.
Parameter name: value
End of inner exception stack trace
End of inner exception stack trace

Hi

We have got same problem and I have found that it happens with reports containing *.pjpeg images. Not all *.pjpeg gives this problem.

Please reply if anyone knows the fix. it is urgent

Thanks

Satjinder

PDF Rendering bug

We are trying to publish a group of financial reports using SQL Server
Reporting Services. We have hit a snag when we try to render the reports in
PDF format. The leading spaces of each line are stripped in the output
file. For example:

Department 10.7240 - ICU

Expenses SubDepartment
-- -
1,200 100
454 150

Becomes:

Department 10.7240 - ICU

Expenses SubDepartment
-- -
1,200 100
454 150

Does anyone know a solution for this problem? By the way, we did upgrade to SP2.
That did not correct the problem.


This blog entry (actually the comments for the entry) discusses same. Long story short, the PDF extension strips leading spaces in this version of SSRS, and there is no workaround :(

http://blogs.msdn.com/bimusings/archive/2005/06/15/429607.aspx

It sounds like you are "artificially" adding these spaces to make things line up. Can you re-position the textboxes which show the values and/or use the alignment settings to make the same thing happen?

|||

Thanks for the information. Actually we are moving a fully formatted report from an old DEC Alpha system to .pdf files. Currently this is done manually. It is a process that involves cutting and pasting hundreds of pages of the original report into output for individual departments. The SSRS report consists of a single text box to hold the lines of the source report. That is why we have leading spaces.

We are able to do all the breakout of individual sections using SQL Server, but It looks like we will have to find another product to do the final conversion from text to .pdf. Actually, tiff files come out great, but they are huge and slow.

Thanks again for the good information.

PDF Rendering - Page break with images

Hi,
I have a main page which has subreports, images and tables. in Preview i can
see the reports with proper page breaks, but when i render it to pdf, the
image and table in the main page is moving to another page, actually only 3
pages has to be printed in pdf but it is printing to 10 pages.
any suggestions please.
Thanks and regards,
AnithaI got the solution, i need to put all the lables and data in a Table to
display it in one page.
"Anitha Naidu" wrote:
> Hi,
> I have a main page which has subreports, images and tables. in Preview i can
> see the reports with proper page breaks, but when i render it to pdf, the
> image and table in the main page is moving to another page, actually only 3
> pages has to be printed in pdf but it is printing to 10 pages.
> any suggestions please.
> Thanks and regards,
> Anitha
>|||Try placing everything inside a rectangle control.
Place a rectangle in a blank area of the body.
Cut the controls including tables you want to contain, select the
rectangle, then paste the controls back in. Align things the way you
want inside the rectangle. This is the best way to restrict things in
RS. It may not work, but it's worth a try.
Cheers
Chris
Anitha Naidu wrote:
> I got the solution, i need to put all the lables and data in a Table
> to display it in one page.
>
> "Anitha Naidu" wrote:
> > Hi,
> >
> > I have a main page which has subreports, images and tables. in
> > Preview i can see the reports with proper page breaks, but when i
> > render it to pdf, the image and table in the main page is moving to
> > another page, actually only 3 pages has to be printed in pdf but it
> > is printing to 10 pages.
> >
> > any suggestions please.
> >
> > Thanks and regards,
> > Anitha
> >

PDF Rendering

I created a small program using XMLHTTP to test the performance of pdf
reports rendering. The program basically sends 20-30 XMLHTTP async
requests with callback function in the format of:
XMLHttpRequest.open "POST", <RS url access>, True
This statement was executed 20-30 times in less than a second to test
if the server can handle multiple request in a short time.
Monitoring the CPU, memory usage and generation of the actual pdf
files on the server, we noticed that the pdf reports rendering were
processed sequentially because files were generated one after another
and the CPU utilization registered a spike that hits around 50% for
each report. If we count the spikes, it matched the no. of reports
generated. No other CPU/memory intensive services are running on the
server when we perform the said test. Each generated pdf file is about
30-40k in size and took about 2-3 sec.
We understand the report rendering time varies because of its
complexity. But our concern is if this is how RS behaves, when there
are 1000 users requesting for their report, it will take years for the
1000th user to get their copy generated and displayed on their
browser.
Is my investigation correct? Anything we can do to improve the
rendering and reduce the time needed?
Thanks in advance for any assistance/comments!!!
CCCThe Report Server is no different than any other ASP.NET web application. It
runs under IIS and processes report request in multi-threaded fashion. As
usual with server-side web applications, CPU is the first resource that will
be maxed out. Therefore, beefing up your report server CPU power should come
as a no-brainer. A dual CPU box (quad recommended) would have probably made
a difference.
To estimate how well your server configuration meet the user load I would
suggest you conduct a capacity planning study. For example, assuming that
the 1,000 users will generate 20 reports per hour during normal working
hours, the Report Server needs to handle (1000 x 8 x 20) / 3,600 = 45
reports (requests)/sec. Once you establish your performance goal, you could
stress-test the server to find out its maximum throughput, e.g. by using ACT
scripts. As you could see, this is no much different than stress-testing web
applications.
If the actual server throughput is beyond your expectations, you should
first try optimizing your report performance. I found the RS execution log
indispensable for this purpose because it gives you time breakdown of how
much the Report Server has spent fetching the report data, generating and
rendering the report. In addition, don't forget caching. You can increase
substantially the server throughput by using different forms of caching. For
example, most likely in your initial tests you didn't pass the session id
with the report requests. However, if the reports are rendered by URL, the
browser will automatically pass the report session id which in many cases
could help the Report Server retrieve the report intermediate definition
without querying the data source and generating the report anew. Execution
caching will speed up things even more because now multiple users can share
the same cached report instance. Same with snapshot caching.
Finally, to achieve fault tollerance and linear scalability (to a point) you
should consider clustering multiple report servers in a web farm
environment.
--
Hope this helps.
---
Teo Lachev, MCSD, MCT
Author: "Microsoft Reporting Services in Action"
http://www.prologika.com
"CCC" <tommytan25@.yahoo.com> wrote in message
news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> I created a small program using XMLHTTP to test the performance of pdf
> reports rendering. The program basically sends 20-30 XMLHTTP async
> requests with callback function in the format of:
> XMLHttpRequest.open "POST", <RS url access>, True
> This statement was executed 20-30 times in less than a second to test
> if the server can handle multiple request in a short time.
> Monitoring the CPU, memory usage and generation of the actual pdf
> files on the server, we noticed that the pdf reports rendering were
> processed sequentially because files were generated one after another
> and the CPU utilization registered a spike that hits around 50% for
> each report. If we count the spikes, it matched the no. of reports
> generated. No other CPU/memory intensive services are running on the
> server when we perform the said test. Each generated pdf file is about
> 30-40k in size and took about 2-3 sec.
> We understand the report rendering time varies because of its
> complexity. But our concern is if this is how RS behaves, when there
> are 1000 users requesting for their report, it will take years for the
> 1000th user to get their copy generated and displayed on their
> browser.
> Is my investigation correct? Anything we can do to improve the
> rendering and reduce the time needed?
> Thanks in advance for any assistance/comments!!!
>
> CCC|||Hi Teo,
Thank you very much for your inputs.
Tried using ACT and created a script with 500 users to test RS but RPS
never goes more than 1.5 during the testing. The test took about 10
mins to complete and all requests were logged into ExecutionLog as
"rsSuccess".
Although it was a success run, it seems to me that RS is still
rendering the requests 1 by 1 and not in a "multi-thread manner" (but
I do believe it should run multi-thread). 10 mins to manage 500 user's
requests is unacceptable for the application I'm working on. Btw, CPU
usage never goes beyond 50% during the execution of the script with
3GB of RAM in the box.
My plan is, starts with 500 users using ACT on a server, then get 4
more server to run another 2000 users. After that, increase each
server by 100 users from 500 to 1000 and see how it goes.
Unfortunately, RPS issue and high Processing Failure counter in
Performance monitoring of RS Web Service make me feel so frustrated
and don't know what to do.
We need to address these 2 issues (RPS & high Processing Failure
counter) ASAP to continue with our performance testing. If not, the
delay in shipping of this project will affect thousands of user in the
upcoming month. I hope MS can do something to help out. Thanks!
CCC
"Teo Lachev" <teo@.nospam.prologika.com> wrote in message news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> The Report Server is no different than any other ASP.NET web application. It
> runs under IIS and processes report request in multi-threaded fashion. As
> usual with server-side web applications, CPU is the first resource that will
> be maxed out. Therefore, beefing up your report server CPU power should come
> as a no-brainer. A dual CPU box (quad recommended) would have probably made
> a difference.
> To estimate how well your server configuration meet the user load I would
> suggest you conduct a capacity planning study. For example, assuming that
> the 1,000 users will generate 20 reports per hour during normal working
> hours, the Report Server needs to handle (1000 x 8 x 20) / 3,600 = 45
> reports (requests)/sec. Once you establish your performance goal, you could
> stress-test the server to find out its maximum throughput, e.g. by using ACT
> scripts. As you could see, this is no much different than stress-testing web
> applications.
> If the actual server throughput is beyond your expectations, you should
> first try optimizing your report performance. I found the RS execution log
> indispensable for this purpose because it gives you time breakdown of how
> much the Report Server has spent fetching the report data, generating and
> rendering the report. In addition, don't forget caching. You can increase
> substantially the server throughput by using different forms of caching. For
> example, most likely in your initial tests you didn't pass the session id
> with the report requests. However, if the reports are rendered by URL, the
> browser will automatically pass the report session id which in many cases
> could help the Report Server retrieve the report intermediate definition
> without querying the data source and generating the report anew. Execution
> caching will speed up things even more because now multiple users can share
> the same cached report instance. Same with snapshot caching.
> Finally, to achieve fault tollerance and linear scalability (to a point) you
> should consider clustering multiple report servers in a web farm
> environment.
> --
> Hope this helps.
> ---
> Teo Lachev, MCSD, MCT
> Author: "Microsoft Reporting Services in Action"
> http://www.prologika.com
>
> "CCC" <tommytan25@.yahoo.com> wrote in message
> news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > I created a small program using XMLHTTP to test the performance of pdf
> > reports rendering. The program basically sends 20-30 XMLHTTP async
> > requests with callback function in the format of:
> >
> > XMLHttpRequest.open "POST", <RS url access>, True
> >
> > This statement was executed 20-30 times in less than a second to test
> > if the server can handle multiple request in a short time.
> >
> > Monitoring the CPU, memory usage and generation of the actual pdf
> > files on the server, we noticed that the pdf reports rendering were
> > processed sequentially because files were generated one after another
> > and the CPU utilization registered a spike that hits around 50% for
> > each report. If we count the spikes, it matched the no. of reports
> > generated. No other CPU/memory intensive services are running on the
> > server when we perform the said test. Each generated pdf file is about
> > 30-40k in size and took about 2-3 sec.
> >
> > We understand the report rendering time varies because of its
> > complexity. But our concern is if this is how RS behaves, when there
> > are 1000 users requesting for their report, it will take years for the
> > 1000th user to get their copy generated and displayed on their
> > browser.
> >
> > Is my investigation correct? Anything we can do to improve the
> > rendering and reduce the time needed?
> >
> > Thanks in advance for any assistance/comments!!!
> >
> >
> > CCC|||Hi,
You can observe the number of threads by monitoring the Process:Thread Count
counter for aspnet_wp (IIS 5) or w3wp (IIS6). IIS does spawn additional
threads to handle the load.
You results puzzle me. CPU doesn't go above 50% but you can't get more
requests. Do you use think time in ACT? I would start with 2 connections
then add additional connections by number of 2, e.g. 4, 8, 16 to find out
where the server throughput maxes out. Then, you need to find out what the
resource constraint is by looking at various performance counters. RS also
comes with useful performance counters, such as report requests, reports
executed/sec, etc. Total Rejected Threads is an interesting one in your
case. "Total number of data processing threads rejected for asynchronous
processing, and subsequently handled as a synchronous process in the same
thread. Each data source is processed on one thread. If the volume of
threads exceeds capacity, threads will be rejected for asynchronous
processing, and will be processed in a serial manner."
Also, did you look at the RS execution log to find out where the time goes:
querying the database, processing the report or rendering it in PDF?
--
Hope this helps.
---
Teo Lachev, MCSD, MCT
Author: "Microsoft Reporting Services in Action"
http://www.manning.com/lachev
Home page and blog http://www.prologika.com
---
"CCC" <tommytan25@.yahoo.com> wrote in message
news:ab9130f9.0408240116.1f8fb8b2@.posting.google.com...
> Hi Teo,
> Thank you very much for your inputs.
> Tried using ACT and created a script with 500 users to test RS but RPS
> never goes more than 1.5 during the testing. The test took about 10
> mins to complete and all requests were logged into ExecutionLog as
> "rsSuccess".
> Although it was a success run, it seems to me that RS is still
> rendering the requests 1 by 1 and not in a "multi-thread manner" (but
> I do believe it should run multi-thread). 10 mins to manage 500 user's
> requests is unacceptable for the application I'm working on. Btw, CPU
> usage never goes beyond 50% during the execution of the script with
> 3GB of RAM in the box.
> My plan is, starts with 500 users using ACT on a server, then get 4
> more server to run another 2000 users. After that, increase each
> server by 100 users from 500 to 1000 and see how it goes.
> Unfortunately, RPS issue and high Processing Failure counter in
> Performance monitoring of RS Web Service make me feel so frustrated
> and don't know what to do.
> We need to address these 2 issues (RPS & high Processing Failure
> counter) ASAP to continue with our performance testing. If not, the
> delay in shipping of this project will affect thousands of user in the
> upcoming month. I hope MS can do something to help out. Thanks!
> CCC
> "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> > The Report Server is no different than any other ASP.NET web
application. It
> > runs under IIS and processes report request in multi-threaded fashion.
As
> > usual with server-side web applications, CPU is the first resource that
will
> > be maxed out. Therefore, beefing up your report server CPU power should
come
> > as a no-brainer. A dual CPU box (quad recommended) would have probably
made
> > a difference.
> >
> > To estimate how well your server configuration meet the user load I
would
> > suggest you conduct a capacity planning study. For example, assuming
that
> > the 1,000 users will generate 20 reports per hour during normal working
> > hours, the Report Server needs to handle (1000 x 8 x 20) / 3,600 = 45
> > reports (requests)/sec. Once you establish your performance goal, you
could
> > stress-test the server to find out its maximum throughput, e.g. by using
ACT
> > scripts. As you could see, this is no much different than stress-testing
web
> > applications.
> >
> > If the actual server throughput is beyond your expectations, you should
> > first try optimizing your report performance. I found the RS execution
log
> > indispensable for this purpose because it gives you time breakdown of
how
> > much the Report Server has spent fetching the report data, generating
and
> > rendering the report. In addition, don't forget caching. You can
increase
> > substantially the server throughput by using different forms of caching.
For
> > example, most likely in your initial tests you didn't pass the session
id
> > with the report requests. However, if the reports are rendered by URL,
the
> > browser will automatically pass the report session id which in many
cases
> > could help the Report Server retrieve the report intermediate definition
> > without querying the data source and generating the report anew.
Execution
> > caching will speed up things even more because now multiple users can
share
> > the same cached report instance. Same with snapshot caching.
> >
> > Finally, to achieve fault tollerance and linear scalability (to a point)
you
> > should consider clustering multiple report servers in a web farm
> > environment.
> >
> > --
> > Hope this helps.
> >
> > ---
> > Teo Lachev, MCSD, MCT
> > Author: "Microsoft Reporting Services in Action"
> > http://www.prologika.com
> >
> >
> > "CCC" <tommytan25@.yahoo.com> wrote in message
> > news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > > I created a small program using XMLHTTP to test the performance of pdf
> > > reports rendering. The program basically sends 20-30 XMLHTTP async
> > > requests with callback function in the format of:
> > >
> > > XMLHttpRequest.open "POST", <RS url access>, True
> > >
> > > This statement was executed 20-30 times in less than a second to test
> > > if the server can handle multiple request in a short time.
> > >
> > > Monitoring the CPU, memory usage and generation of the actual pdf
> > > files on the server, we noticed that the pdf reports rendering were
> > > processed sequentially because files were generated one after another
> > > and the CPU utilization registered a spike that hits around 50% for
> > > each report. If we count the spikes, it matched the no. of reports
> > > generated. No other CPU/memory intensive services are running on the
> > > server when we perform the said test. Each generated pdf file is about
> > > 30-40k in size and took about 2-3 sec.
> > >
> > > We understand the report rendering time varies because of its
> > > complexity. But our concern is if this is how RS behaves, when there
> > > are 1000 users requesting for their report, it will take years for the
> > > 1000th user to get their copy generated and displayed on their
> > > browser.
> > >
> > > Is my investigation correct? Anything we can do to improve the
> > > rendering and reduce the time needed?
> > >
> > > Thanks in advance for any assistance/comments!!!
> > >
> > >
> > > CCC|||Hi Teo,
Thanks for you comments.
Regardless of number of concurrent users I defined in ACT (1 server
with 500 users or 4 servers with 2000 users to request data from RS),
the RS's processor utilization never goes above 50-60%. They system
doesn't seems to have resource constraint but rather processing
problem. That's why I'm saying RS is managing the throughput and
processing the requests sequentially.
- 1 ACT server with 500 concurrent connections took 10mins at 0.8-1
RPS
to complete the reports
- 4 ACT server with 500x4 concurrent connections took 16mins at 0.5-1
RPS to complete the reports
Yes there's a slight drop in the throughput but I was expecting RS to
handle more than 1 RPS for both scenarios.
I understand Total Processing Failure and Total Rejected Thread
counters were 2 different things, the first one is giving more
headache at thousands mark while the later is manageable between 5-10
for 500 concurrent users.
Checking the ExecutionLog, out of 500 reports, there are only 40-50
report with very minimal (0.05 msec) overlapped execution start and
end time. The rest were processed in sequential manner.
I posted the details of the ACT report and my script on the other
thread with the subject "Performance Testing Using ACT", please refer
to the thread for more info.
What else do I need to look at?
Really appreciate your comments, thanks!
CCC
"Teo Lachev" <teo@.nospam.prologika.com> wrote in message news:<#CpCmydiEHA.1384@.TK2MSFTNGP10.phx.gbl>...
> Hi,
> You can observe the number of threads by monitoring the Process:Thread Count
> counter for aspnet_wp (IIS 5) or w3wp (IIS6). IIS does spawn additional
> threads to handle the load.
> You results puzzle me. CPU doesn't go above 50% but you can't get more
> requests. Do you use think time in ACT? I would start with 2 connections
> then add additional connections by number of 2, e.g. 4, 8, 16 to find out
> where the server throughput maxes out. Then, you need to find out what the
> resource constraint is by looking at various performance counters. RS also
> comes with useful performance counters, such as report requests, reports
> executed/sec, etc. Total Rejected Threads is an interesting one in your
> case. "Total number of data processing threads rejected for asynchronous
> processing, and subsequently handled as a synchronous process in the same
> thread. Each data source is processed on one thread. If the volume of
> threads exceeds capacity, threads will be rejected for asynchronous
> processing, and will be processed in a serial manner."
> Also, did you look at the RS execution log to find out where the time goes:
> querying the database, processing the report or rendering it in PDF?
> --
> Hope this helps.
> ---
> Teo Lachev, MCSD, MCT
> Author: "Microsoft Reporting Services in Action"
> http://www.manning.com/lachev
> Home page and blog http://www.prologika.com
> ---
> "CCC" <tommytan25@.yahoo.com> wrote in message
> news:ab9130f9.0408240116.1f8fb8b2@.posting.google.com...
> > Hi Teo,
> >
> > Thank you very much for your inputs.
> >
> > Tried using ACT and created a script with 500 users to test RS but RPS
> > never goes more than 1.5 during the testing. The test took about 10
> > mins to complete and all requests were logged into ExecutionLog as
> > "rsSuccess".
> >
> > Although it was a success run, it seems to me that RS is still
> > rendering the requests 1 by 1 and not in a "multi-thread manner" (but
> > I do believe it should run multi-thread). 10 mins to manage 500 user's
> > requests is unacceptable for the application I'm working on. Btw, CPU
> > usage never goes beyond 50% during the execution of the script with
> > 3GB of RAM in the box.
> >
> > My plan is, starts with 500 users using ACT on a server, then get 4
> > more server to run another 2000 users. After that, increase each
> > server by 100 users from 500 to 1000 and see how it goes.
> > Unfortunately, RPS issue and high Processing Failure counter in
> > Performance monitoring of RS Web Service make me feel so frustrated
> > and don't know what to do.
> >
> > We need to address these 2 issues (RPS & high Processing Failure
> > counter) ASAP to continue with our performance testing. If not, the
> > delay in shipping of this project will affect thousands of user in the
> > upcoming month. I hope MS can do something to help out. Thanks!
> >
> > CCC
> >
> > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> > > The Report Server is no different than any other ASP.NET web
> application. It
> > > runs under IIS and processes report request in multi-threaded fashion.
> As
> > > usual with server-side web applications, CPU is the first resource that
> will
> > > be maxed out. Therefore, beefing up your report server CPU power should
> come
> > > as a no-brainer. A dual CPU box (quad recommended) would have probably
> made
> > > a difference.
> > >
> > > To estimate how well your server configuration meet the user load I
> would
> > > suggest you conduct a capacity planning study. For example, assuming
> that
> > > the 1,000 users will generate 20 reports per hour during normal working
> > > hours, the Report Server needs to handle (1000 x 8 x 20) / 3,600 = 45
> > > reports (requests)/sec. Once you establish your performance goal, you
> could
> > > stress-test the server to find out its maximum throughput, e.g. by using
> ACT
> > > scripts. As you could see, this is no much different than stress-testing
> web
> > > applications.
> > >
> > > If the actual server throughput is beyond your expectations, you should
> > > first try optimizing your report performance. I found the RS execution
> log
> > > indispensable for this purpose because it gives you time breakdown of
> how
> > > much the Report Server has spent fetching the report data, generating
> and
> > > rendering the report. In addition, don't forget caching. You can
> increase
> > > substantially the server throughput by using different forms of caching.
> For
> > > example, most likely in your initial tests you didn't pass the session
> id
> > > with the report requests. However, if the reports are rendered by URL,
> the
> > > browser will automatically pass the report session id which in many
> cases
> > > could help the Report Server retrieve the report intermediate definition
> > > without querying the data source and generating the report anew.
> Execution
> > > caching will speed up things even more because now multiple users can
> share
> > > the same cached report instance. Same with snapshot caching.
> > >
> > > Finally, to achieve fault tollerance and linear scalability (to a point)
> you
> > > should consider clustering multiple report servers in a web farm
> > > environment.
> > >
> > > --
> > > Hope this helps.
> > >
> > > ---
> > > Teo Lachev, MCSD, MCT
> > > Author: "Microsoft Reporting Services in Action"
> > > http://www.prologika.com
> > >
> > >
> > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > > > I created a small program using XMLHTTP to test the performance of pdf
> > > > reports rendering. The program basically sends 20-30 XMLHTTP async
> > > > requests with callback function in the format of:
> > > >
> > > > XMLHttpRequest.open "POST", <RS url access>, True
> > > >
> > > > This statement was executed 20-30 times in less than a second to test
> > > > if the server can handle multiple request in a short time.
> > > >
> > > > Monitoring the CPU, memory usage and generation of the actual pdf
> > > > files on the server, we noticed that the pdf reports rendering were
> > > > processed sequentially because files were generated one after another
> > > > and the CPU utilization registered a spike that hits around 50% for
> > > > each report. If we count the spikes, it matched the no. of reports
> > > > generated. No other CPU/memory intensive services are running on the
> > > > server when we perform the said test. Each generated pdf file is about
> > > > 30-40k in size and took about 2-3 sec.
> > > >
> > > > We understand the report rendering time varies because of its
> > > > complexity. But our concern is if this is how RS behaves, when there
> > > > are 1000 users requesting for their report, it will take years for the
> > > > 1000th user to get their copy generated and displayed on their
> > > > browser.
> > > >
> > > > Is my investigation correct? Anything we can do to improve the
> > > > rendering and reduce the time needed?
> > > >
> > > > Thanks in advance for any assistance/comments!!!
> > > >
> > > >
> > > > CCC|||OK, tell me a bit more about your ACT testing methodology. First, which
version of ACT are you using? How do you set up 4 servers with 2000 users?
Second, why do you start with 500 concurrent connections? Please note that
500 users means that ACT will try to create a huge number of background
threads on the ACT client which may be what is causing the delay. What is
your CPU utilization on the client machine?
As I said, I would establish a performance metrics in requests/sec. Then, i
will pump up the server load by factor of 2, but I won't start with 500
users. This is in no way equivalent to 500 users requesting reports because
you have to factor in the user think time. Intead, I will start with 1, 2,
4, 8, etc. until I reach the troughput peak. Could you do this and let me
know at what point the Report Server throughput peaks.
Does it make sense?
--
Hope this helps.
---
Teo Lachev, MCSD, MCT
Author: "Microsoft Reporting Services in Action"
http://www.manning.com/lachev
Home page and blog http://www.prologika.com
---
"CCC" <tommytan25@.yahoo.com> wrote in message
news:ab9130f9.0408241732.730edd8b@.posting.google.com...
> Hi Teo,
> Thanks for you comments.
> Regardless of number of concurrent users I defined in ACT (1 server
> with 500 users or 4 servers with 2000 users to request data from RS),
> the RS's processor utilization never goes above 50-60%. They system
> doesn't seems to have resource constraint but rather processing
> problem. That's why I'm saying RS is managing the throughput and
> processing the requests sequentially.
> - 1 ACT server with 500 concurrent connections took 10mins at 0.8-1
> RPS
> to complete the reports
> - 4 ACT server with 500x4 concurrent connections took 16mins at 0.5-1
> RPS to complete the reports
> Yes there's a slight drop in the throughput but I was expecting RS to
> handle more than 1 RPS for both scenarios.
> I understand Total Processing Failure and Total Rejected Thread
> counters were 2 different things, the first one is giving more
> headache at thousands mark while the later is manageable between 5-10
> for 500 concurrent users.
> Checking the ExecutionLog, out of 500 reports, there are only 40-50
> report with very minimal (0.05 msec) overlapped execution start and
> end time. The rest were processed in sequential manner.
> I posted the details of the ACT report and my script on the other
> thread with the subject "Performance Testing Using ACT", please refer
> to the thread for more info.
> What else do I need to look at?
> Really appreciate your comments, thanks!
> CCC
> "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
news:<#CpCmydiEHA.1384@.TK2MSFTNGP10.phx.gbl>...
> > Hi,
> >
> > You can observe the number of threads by monitoring the Process:Thread
Count
> > counter for aspnet_wp (IIS 5) or w3wp (IIS6). IIS does spawn additional
> > threads to handle the load.
> >
> > You results puzzle me. CPU doesn't go above 50% but you can't get more
> > requests. Do you use think time in ACT? I would start with 2 connections
> > then add additional connections by number of 2, e.g. 4, 8, 16 to find
out
> > where the server throughput maxes out. Then, you need to find out what
the
> > resource constraint is by looking at various performance counters. RS
also
> > comes with useful performance counters, such as report requests, reports
> > executed/sec, etc. Total Rejected Threads is an interesting one in your
> > case. "Total number of data processing threads rejected for asynchronous
> > processing, and subsequently handled as a synchronous process in the
same
> > thread. Each data source is processed on one thread. If the volume of
> > threads exceeds capacity, threads will be rejected for asynchronous
> > processing, and will be processed in a serial manner."
> >
> > Also, did you look at the RS execution log to find out where the time
goes:
> > querying the database, processing the report or rendering it in PDF?
> >
> > --
> > Hope this helps.
> >
> > ---
> > Teo Lachev, MCSD, MCT
> > Author: "Microsoft Reporting Services in Action"
> > http://www.manning.com/lachev
> > Home page and blog http://www.prologika.com
> > ---
> >
> > "CCC" <tommytan25@.yahoo.com> wrote in message
> > news:ab9130f9.0408240116.1f8fb8b2@.posting.google.com...
> > > Hi Teo,
> > >
> > > Thank you very much for your inputs.
> > >
> > > Tried using ACT and created a script with 500 users to test RS but RPS
> > > never goes more than 1.5 during the testing. The test took about 10
> > > mins to complete and all requests were logged into ExecutionLog as
> > > "rsSuccess".
> > >
> > > Although it was a success run, it seems to me that RS is still
> > > rendering the requests 1 by 1 and not in a "multi-thread manner" (but
> > > I do believe it should run multi-thread). 10 mins to manage 500 user's
> > > requests is unacceptable for the application I'm working on. Btw, CPU
> > > usage never goes beyond 50% during the execution of the script with
> > > 3GB of RAM in the box.
> > >
> > > My plan is, starts with 500 users using ACT on a server, then get 4
> > > more server to run another 2000 users. After that, increase each
> > > server by 100 users from 500 to 1000 and see how it goes.
> > > Unfortunately, RPS issue and high Processing Failure counter in
> > > Performance monitoring of RS Web Service make me feel so frustrated
> > > and don't know what to do.
> > >
> > > We need to address these 2 issues (RPS & high Processing Failure
> > > counter) ASAP to continue with our performance testing. If not, the
> > > delay in shipping of this project will affect thousands of user in the
> > > upcoming month. I hope MS can do something to help out. Thanks!
> > >
> > > CCC
> > >
> > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> > news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> > > > The Report Server is no different than any other ASP.NET web
> > application. It
> > > > runs under IIS and processes report request in multi-threaded
fashion.
> > As
> > > > usual with server-side web applications, CPU is the first resource
that
> > will
> > > > be maxed out. Therefore, beefing up your report server CPU power
should
> > come
> > > > as a no-brainer. A dual CPU box (quad recommended) would have
probably
> > made
> > > > a difference.
> > > >
> > > > To estimate how well your server configuration meet the user load I
> > would
> > > > suggest you conduct a capacity planning study. For example, assuming
> > that
> > > > the 1,000 users will generate 20 reports per hour during normal
working
> > > > hours, the Report Server needs to handle (1000 x 8 x 20) / 3,600 =45
> > > > reports (requests)/sec. Once you establish your performance goal,
you
> > could
> > > > stress-test the server to find out its maximum throughput, e.g. by
using
> > ACT
> > > > scripts. As you could see, this is no much different than
stress-testing
> > web
> > > > applications.
> > > >
> > > > If the actual server throughput is beyond your expectations, you
should
> > > > first try optimizing your report performance. I found the RS
execution
> > log
> > > > indispensable for this purpose because it gives you time breakdown
of
> > how
> > > > much the Report Server has spent fetching the report data,
generating
> > and
> > > > rendering the report. In addition, don't forget caching. You can
> > increase
> > > > substantially the server throughput by using different forms of
caching.
> > For
> > > > example, most likely in your initial tests you didn't pass the
session
> > id
> > > > with the report requests. However, if the reports are rendered by
URL,
> > the
> > > > browser will automatically pass the report session id which in many
> > cases
> > > > could help the Report Server retrieve the report intermediate
definition
> > > > without querying the data source and generating the report anew.
> > Execution
> > > > caching will speed up things even more because now multiple users
can
> > share
> > > > the same cached report instance. Same with snapshot caching.
> > > >
> > > > Finally, to achieve fault tollerance and linear scalability (to a
point)
> > you
> > > > should consider clustering multiple report servers in a web farm
> > > > environment.
> > > >
> > > > --
> > > > Hope this helps.
> > > >
> > > > ---
> > > > Teo Lachev, MCSD, MCT
> > > > Author: "Microsoft Reporting Services in Action"
> > > > http://www.prologika.com
> > > >
> > > >
> > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > > > > I created a small program using XMLHTTP to test the performance of
pdf
> > > > > reports rendering. The program basically sends 20-30 XMLHTTP async
> > > > > requests with callback function in the format of:
> > > > >
> > > > > XMLHttpRequest.open "POST", <RS url access>, True
> > > > >
> > > > > This statement was executed 20-30 times in less than a second to
test
> > > > > if the server can handle multiple request in a short time.
> > > > >
> > > > > Monitoring the CPU, memory usage and generation of the actual pdf
> > > > > files on the server, we noticed that the pdf reports rendering
were
> > > > > processed sequentially because files were generated one after
another
> > > > > and the CPU utilization registered a spike that hits around 50%
for
> > > > > each report. If we count the spikes, it matched the no. of reports
> > > > > generated. No other CPU/memory intensive services are running on
the
> > > > > server when we perform the said test. Each generated pdf file is
about
> > > > > 30-40k in size and took about 2-3 sec.
> > > > >
> > > > > We understand the report rendering time varies because of its
> > > > > complexity. But our concern is if this is how RS behaves, when
there
> > > > > are 1000 users requesting for their report, it will take years for
the
> > > > > 1000th user to get their copy generated and displayed on their
> > > > > browser.
> > > > >
> > > > > Is my investigation correct? Anything we can do to improve the
> > > > > rendering and reduce the time needed?
> > > > >
> > > > > Thanks in advance for any assistance/comments!!!
> > > > >
> > > > >
> > > > > CCC|||Hi Teo,
The version of ACT is 1.0.536.0 that comes with my VS.NET Enterprise.
I have 4 servers with ACT installed:
* Server A - P4 1.8 GHz & 512RAM
* Servers B, C & D - 4 x Xeon 2.8 GHz & 4GB RAM
* RS Server - 2 x Xeon 3.06GHz & 3GB RAM (abc.xyz.com)
* Each serve has T1 connection to the internet
For each server, I created a test script containing only 1 line:
Test.SendRequest("http://abc.xyz.com/ReportServer?/StudentReportCard&rs:Command=Render&rs:format=html4.0&rc:Toolbar=false&UserID=3232")
I tried running 5 separate tests using only Server B by setting the
simultaneous browser connections in test properties to 20, 100, 150,
200 & 500 (also specify the test duration run time to 3 mins w/ 0
warmup time). During the entire 5 tests, RPS always stay at 2-3 RPS
(CPU = 90 to 100%) until the tests were ended. I also tried lowering
the number of concurrent users as what you said (1, 2, 4, 8, 10, 20),
the RPS never changed, it remains between 2-3 RPS regardless of the
number of users specified. This is what I got from one of the test
with 2 concurrent users defined:
===========================================================Properties
Test type: Dynamic
Simultaneous browser connections: 2
Warm up time (secs): 0
Test duration: 00:00:03:00
Test iterations: 270
Detailed test results generated: Yes
Summary
Total number of requests: 270
Total number of connections: 270
Average requests per second: 1.50
Average time to first byte (msecs): 822.73
Average time to last byte (msecs): 1,281.97
Average time to last byte per iteration (msecs): 1,281.97
Number of unique requests made in test: 1
Number of unique response codes: 1
Errors Counts
HTTP: 0
DNS: 0
Socket: 0
Additional Network Statistics
Average bandwidth (bytes/sec): 107,324.83
Number of bytes sent (bytes): 120,490
Number of bytes received (bytes): 19,197,980
Average rate of sent bytes (bytes/sec): 669.39
Average rate of received bytes (bytes/sec): 106,655.44
Number of connection errors: 0
Number of send errors: 0
Number of receive errors: 0
Number of timeout errors: 0
Response Codes
Response Code: 200 - The request completed successfully.
Count: 270
Percent (%): 100.00
===========================================================
With 2 concurrent users defined in ACT, RS Server's CPU utilization is
around 50%. The throughput reached 100% when users were increased to
4. I tried another simple login.asp link of another project on a
server over internet (not a RS server/site) with 2000 users using
server B and I was able to get 250+ RPS. The only thing I can think of
is RS or my report requires more resources or is trying to manage the
requests that comes in. That's why regardless of number of users, it
only allow 2-3 RPS to avoid bug down. Or, simply some DoS prevention
feature is in place that limit the requests to be processed. Comments?
The problem here is we were not able to even establish performance
metric we need (reducing no. of users to achieve at least 100 RPS).
That's why I was thinking if there's anything I need to look at to
increase the RPS before I can proceed with further testing.
I will try to test the RS sample reports and see if the behaviors are
the same...
CCC
"Teo Lachev" <teo@.nospam.prologika.com> wrote in message news:<eJaAHxpiEHA.536@.TK2MSFTNGP11.phx.gbl>...
> OK, tell me a bit more about your ACT testing methodology. First, which
> version of ACT are you using? How do you set up 4 servers with 2000 users?
> Second, why do you start with 500 concurrent connections? Please note that
> 500 users means that ACT will try to create a huge number of background
> threads on the ACT client which may be what is causing the delay. What is
> your CPU utilization on the client machine?
> As I said, I would establish a performance metrics in requests/sec. Then, i
> will pump up the server load by factor of 2, but I won't start with 500
> users. This is in no way equivalent to 500 users requesting reports because
> you have to factor in the user think time. Intead, I will start with 1, 2,
> 4, 8, etc. until I reach the troughput peak. Could you do this and let me
> know at what point the Report Server throughput peaks.
> Does it make sense?
> --
> Hope this helps.
> ---
> Teo Lachev, MCSD, MCT
> Author: "Microsoft Reporting Services in Action"
> http://www.manning.com/lachev
> Home page and blog http://www.prologika.com
> ---
> "CCC" <tommytan25@.yahoo.com> wrote in message
> news:ab9130f9.0408241732.730edd8b@.posting.google.com...
> > Hi Teo,
> >
> > Thanks for you comments.
> >
> > Regardless of number of concurrent users I defined in ACT (1 server
> > with 500 users or 4 servers with 2000 users to request data from RS),
> > the RS's processor utilization never goes above 50-60%. They system
> > doesn't seems to have resource constraint but rather processing
> > problem. That's why I'm saying RS is managing the throughput and
> > processing the requests sequentially.
> >
> > - 1 ACT server with 500 concurrent connections took 10mins at 0.8-1
> > RPS
> > to complete the reports
> >
> > - 4 ACT server with 500x4 concurrent connections took 16mins at 0.5-1
> > RPS to complete the reports
> >
> > Yes there's a slight drop in the throughput but I was expecting RS to
> > handle more than 1 RPS for both scenarios.
> >
> > I understand Total Processing Failure and Total Rejected Thread
> > counters were 2 different things, the first one is giving more
> > headache at thousands mark while the later is manageable between 5-10
> > for 500 concurrent users.
> >
> > Checking the ExecutionLog, out of 500 reports, there are only 40-50
> > report with very minimal (0.05 msec) overlapped execution start and
> > end time. The rest were processed in sequential manner.
> >
> > I posted the details of the ACT report and my script on the other
> > thread with the subject "Performance Testing Using ACT", please refer
> > to the thread for more info.
> >
> > What else do I need to look at?
> >
> > Really appreciate your comments, thanks!
> >
> > CCC
> >
> > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<#CpCmydiEHA.1384@.TK2MSFTNGP10.phx.gbl>...
> > > Hi,
> > >
> > > You can observe the number of threads by monitoring the Process:Thread
> Count
> > > counter for aspnet_wp (IIS 5) or w3wp (IIS6). IIS does spawn additional
> > > threads to handle the load.
> > >
> > > You results puzzle me. CPU doesn't go above 50% but you can't get more
> > > requests. Do you use think time in ACT? I would start with 2 connections
> > > then add additional connections by number of 2, e.g. 4, 8, 16 to find
> out
> > > where the server throughput maxes out. Then, you need to find out what
> the
> > > resource constraint is by looking at various performance counters. RS
> also
> > > comes with useful performance counters, such as report requests, reports
> > > executed/sec, etc. Total Rejected Threads is an interesting one in your
> > > case. "Total number of data processing threads rejected for asynchronous
> > > processing, and subsequently handled as a synchronous process in the
> same
> > > thread. Each data source is processed on one thread. If the volume of
> > > threads exceeds capacity, threads will be rejected for asynchronous
> > > processing, and will be processed in a serial manner."
> > >
> > > Also, did you look at the RS execution log to find out where the time
> goes:
> > > querying the database, processing the report or rendering it in PDF?
> > >
> > > --
> > > Hope this helps.
> > >
> > > ---
> > > Teo Lachev, MCSD, MCT
> > > Author: "Microsoft Reporting Services in Action"
> > > http://www.manning.com/lachev
> > > Home page and blog http://www.prologika.com
> > > ---
> > >
> > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > news:ab9130f9.0408240116.1f8fb8b2@.posting.google.com...
> > > > Hi Teo,
> > > >
> > > > Thank you very much for your inputs.
> > > >
> > > > Tried using ACT and created a script with 500 users to test RS but RPS
> > > > never goes more than 1.5 during the testing. The test took about 10
> > > > mins to complete and all requests were logged into ExecutionLog as
> > > > "rsSuccess".
> > > >
> > > > Although it was a success run, it seems to me that RS is still
> > > > rendering the requests 1 by 1 and not in a "multi-thread manner" (but
> > > > I do believe it should run multi-thread). 10 mins to manage 500 user's
> > > > requests is unacceptable for the application I'm working on. Btw, CPU
> > > > usage never goes beyond 50% during the execution of the script with
> > > > 3GB of RAM in the box.
> > > >
> > > > My plan is, starts with 500 users using ACT on a server, then get 4
> > > > more server to run another 2000 users. After that, increase each
> > > > server by 100 users from 500 to 1000 and see how it goes.
> > > > Unfortunately, RPS issue and high Processing Failure counter in
> > > > Performance monitoring of RS Web Service make me feel so frustrated
> > > > and don't know what to do.
> > > >
> > > > We need to address these 2 issues (RPS & high Processing Failure
> > > > counter) ASAP to continue with our performance testing. If not, the
> > > > delay in shipping of this project will affect thousands of user in the
> > > > upcoming month. I hope MS can do something to help out. Thanks!
> > > >
> > > > CCC
> > > >
> > > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> > > > > The Report Server is no different than any other ASP.NET web
> application. It
> > > > > runs under IIS and processes report request in multi-threaded
> fashion.
> As
> > > > > usual with server-side web applications, CPU is the first resource
> that
> will
> > > > > be maxed out. Therefore, beefing up your report server CPU power
> should
> come
> > > > > as a no-brainer. A dual CPU box (quad recommended) would have
> probably
> made
> > > > > a difference.
> > > > >
> > > > > To estimate how well your server configuration meet the user load I
> would
> > > > > suggest you conduct a capacity planning study. For example, assuming
> that
> > > > > the 1,000 users will generate 20 reports per hour during normal
> working
> > > > > hours, the Report Server needs to handle (1000 x 8 x 20) / 3,600 => 45
> > > > > reports (requests)/sec. Once you establish your performance goal,
> you
> could
> > > > > stress-test the server to find out its maximum throughput, e.g. by
> using
> ACT
> > > > > scripts. As you could see, this is no much different than
> stress-testing
> web
> > > > > applications.
> > > > >
> > > > > If the actual server throughput is beyond your expectations, you
> should
> > > > > first try optimizing your report performance. I found the RS
> execution
> log
> > > > > indispensable for this purpose because it gives you time breakdown
> of
> how
> > > > > much the Report Server has spent fetching the report data,
> generating
> and
> > > > > rendering the report. In addition, don't forget caching. You can
> increase
> > > > > substantially the server throughput by using different forms of
> caching.
> For
> > > > > example, most likely in your initial tests you didn't pass the
> session
> id
> > > > > with the report requests. However, if the reports are rendered by
> URL,
> the
> > > > > browser will automatically pass the report session id which in many
> cases
> > > > > could help the Report Server retrieve the report intermediate
> definition
> > > > > without querying the data source and generating the report anew.
> Execution
> > > > > caching will speed up things even more because now multiple users
> can
> share
> > > > > the same cached report instance. Same with snapshot caching.
> > > > >
> > > > > Finally, to achieve fault tollerance and linear scalability (to a
> point)
> you
> > > > > should consider clustering multiple report servers in a web farm
> > > > > environment.
> > > > >
> > > > > --
> > > > > Hope this helps.
> > > > >
> > > > > ---
> > > > > Teo Lachev, MCSD, MCT
> > > > > Author: "Microsoft Reporting Services in Action"
> > > > > http://www.prologika.com
> > > > >
> > > > >
> > > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > > news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > > > > > I created a small program using XMLHTTP to test the performance of
> pdf
> > > > > > reports rendering. The program basically sends 20-30 XMLHTTP async
> > > > > > requests with callback function in the format of:
> > > > > >
> > > > > > XMLHttpRequest.open "POST", <RS url access>, True
> > > > > >
> > > > > > This statement was executed 20-30 times in less than a second to
> test
> > > > > > if the server can handle multiple request in a short time.
> > > > > >
> > > > > > Monitoring the CPU, memory usage and generation of the actual pdf
> > > > > > files on the server, we noticed that the pdf reports rendering
> were
> > > > > > processed sequentially because files were generated one after
> another
> > > > > > and the CPU utilization registered a spike that hits around 50%
> for
> > > > > > each report. If we count the spikes, it matched the no. of reports
> > > > > > generated. No other CPU/memory intensive services are running on
> the
> > > > > > server when we perform the said test. Each generated pdf file is
> about
> > > > > > 30-40k in size and took about 2-3 sec.
> > > > > >
> > > > > > We understand the report rendering time varies because of its
> > > > > > complexity. But our concern is if this is how RS behaves, when
> there
> > > > > > are 1000 users requesting for their report, it will take years for
> the
> > > > > > 1000th user to get their copy generated and displayed on their
> > > > > > browser.
> > > > > >
> > > > > > Is my investigation correct? Anything we can do to improve the
> > > > > > rendering and reduce the time needed?
> > > > > >
> > > > > > Thanks in advance for any assistance/comments!!!
> > > > > >
> > > > > >
> > > > > > CCC|||Just tried using sample reports included in the RS installer, still
the same behavior.
============================================================URL - Test.SendRequest("http://abc.xyz.com/ReportServer?/company%20sales&rs:Command=Render&rs:format=html4.0&rc:Toolbar=false")
No. of concurrent users defined in ACT: 1, 2, 4, 8 ,10, 20
Test duration run time: 3 mins.
1 User -
RS Server CPU Utilization: 50-60%
Ave. RPS: 1.07
2 Users -
RS Server CPU Utilization: 70-80% (Drop to 30-40% for the last 0.5
min)
Ave. RPS: 2.43 (1-1.5 RPS for the first 2.5 mins, then jump to 8-9 RPS
for the remaining 0.5 mins)
4 Users -
RS Server CPU Utilization: 95-100% (Drop to 30-40% for the last 20
sec.)
Ave. RPS: 3.03 (1-1.5 RPS for the first 2.7 mins, then jump to 16-17
RPS for the remaining 20 sec)
============================================================URL - Test.SendRequest("http://staging.atitesting.com/ReportServer?/Product%20Catalog&rs:Command=Render&rs:format=html4.0&rc:Toolbar=false")
No. of concurrent users defined in ACT: 1, 2, 4, 8 ,10, 20
Test duration run time: 3 mins.
1 User -
RS Server CPU Utilization: 7-40% (Up and down for the entire 3 mins.)
Ave. RPS: 0.26 (0.5-1 RPS)
2 Users -
RS Server CPU Utilization: 20-70% (Up and down for the entire 3 mins.)
Ave. RPS: 0.41 (0.5-1 RPS)
4 Users -
RS Server CPU Utilization: 20-100% (Up and down for the entire 3
mins.)
Ave. RPS: 0.53 (0.5-1.5 RPS)
Can anybody tell me why is it like that' Hello Microsoft'
CCC
tommytan25@.yahoo.com (CCC) wrote in message news:<ab9130f9.0408251851.75145c67@.posting.google.com>...
> Hi Teo,
> The version of ACT is 1.0.536.0 that comes with my VS.NET Enterprise.
> I have 4 servers with ACT installed:
> * Server A - P4 1.8 GHz & 512RAM
> * Servers B, C & D - 4 x Xeon 2.8 GHz & 4GB RAM
> * RS Server - 2 x Xeon 3.06GHz & 3GB RAM (abc.xyz.com)
> * Each serve has T1 connection to the internet
>
> For each server, I created a test script containing only 1 line:
> Test.SendRequest("http://abc.xyz.com/ReportServer?/StudentReportCard&rs:Command=Render&rs:format=html4.0&rc:Toolbar=false&UserID=3232")
> I tried running 5 separate tests using only Server B by setting the
> simultaneous browser connections in test properties to 20, 100, 150,
> 200 & 500 (also specify the test duration run time to 3 mins w/ 0
> warmup time). During the entire 5 tests, RPS always stay at 2-3 RPS
> (CPU = 90 to 100%) until the tests were ended. I also tried lowering
> the number of concurrent users as what you said (1, 2, 4, 8, 10, 20),
> the RPS never changed, it remains between 2-3 RPS regardless of the
> number of users specified. This is what I got from one of the test
> with 2 concurrent users defined:
> ===========================================================> Properties
> Test type: Dynamic
> Simultaneous browser connections: 2
> Warm up time (secs): 0
> Test duration: 00:00:03:00
> Test iterations: 270
> Detailed test results generated: Yes
> Summary
> Total number of requests: 270
> Total number of connections: 270
> Average requests per second: 1.50
> Average time to first byte (msecs): 822.73
> Average time to last byte (msecs): 1,281.97
> Average time to last byte per iteration (msecs): 1,281.97
> Number of unique requests made in test: 1
> Number of unique response codes: 1
> Errors Counts
> HTTP: 0
> DNS: 0
> Socket: 0
> Additional Network Statistics
> Average bandwidth (bytes/sec): 107,324.83
> Number of bytes sent (bytes): 120,490
> Number of bytes received (bytes): 19,197,980
> Average rate of sent bytes (bytes/sec): 669.39
> Average rate of received bytes (bytes/sec): 106,655.44
> Number of connection errors: 0
> Number of send errors: 0
> Number of receive errors: 0
> Number of timeout errors: 0
> Response Codes
> Response Code: 200 - The request completed successfully.
> Count: 270
> Percent (%): 100.00
> ===========================================================> With 2 concurrent users defined in ACT, RS Server's CPU utilization is
> around 50%. The throughput reached 100% when users were increased to
> 4. I tried another simple login.asp link of another project on a
> server over internet (not a RS server/site) with 2000 users using
> server B and I was able to get 250+ RPS. The only thing I can think of
> is RS or my report requires more resources or is trying to manage the
> requests that comes in. That's why regardless of number of users, it
> only allow 2-3 RPS to avoid bug down. Or, simply some DoS prevention
> feature is in place that limit the requests to be processed. Comments?
> The problem here is we were not able to even establish performance
> metric we need (reducing no. of users to achieve at least 100 RPS).
> That's why I was thinking if there's anything I need to look at to
> increase the RPS before I can proceed with further testing.
> I will try to test the RS sample reports and see if the behaviors are
> the same...
> CCC
>
> "Teo Lachev" <teo@.nospam.prologika.com> wrote in message news:<eJaAHxpiEHA.536@.TK2MSFTNGP11.phx.gbl>...
> > OK, tell me a bit more about your ACT testing methodology. First, which
> > version of ACT are you using? How do you set up 4 servers with 2000 users?
> > Second, why do you start with 500 concurrent connections? Please note that
> > 500 users means that ACT will try to create a huge number of background
> > threads on the ACT client which may be what is causing the delay. What is
> > your CPU utilization on the client machine?
> >
> > As I said, I would establish a performance metrics in requests/sec. Then, i
> > will pump up the server load by factor of 2, but I won't start with 500
> > users. This is in no way equivalent to 500 users requesting reports because
> > you have to factor in the user think time. Intead, I will start with 1, 2,
> > 4, 8, etc. until I reach the troughput peak. Could you do this and let me
> > know at what point the Report Server throughput peaks.
> >
> > Does it make sense?
> >
> > --
> > Hope this helps.
> >
> > ---
> > Teo Lachev, MCSD, MCT
> > Author: "Microsoft Reporting Services in Action"
> > http://www.manning.com/lachev
> > Home page and blog http://www.prologika.com
> > ---
> >
> > "CCC" <tommytan25@.yahoo.com> wrote in message
> > news:ab9130f9.0408241732.730edd8b@.posting.google.com...
> > > Hi Teo,
> > >
> > > Thanks for you comments.
> > >
> > > Regardless of number of concurrent users I defined in ACT (1 server
> > > with 500 users or 4 servers with 2000 users to request data from RS),
> > > the RS's processor utilization never goes above 50-60%. They system
> > > doesn't seems to have resource constraint but rather processing
> > > problem. That's why I'm saying RS is managing the throughput and
> > > processing the requests sequentially.
> > >
> > > - 1 ACT server with 500 concurrent connections took 10mins at 0.8-1
> > > RPS
> > > to complete the reports
> > >
> > > - 4 ACT server with 500x4 concurrent connections took 16mins at 0.5-1
> > > RPS to complete the reports
> > >
> > > Yes there's a slight drop in the throughput but I was expecting RS to
> > > handle more than 1 RPS for both scenarios.
> > >
> > > I understand Total Processing Failure and Total Rejected Thread
> > > counters were 2 different things, the first one is giving more
> > > headache at thousands mark while the later is manageable between 5-10
> > > for 500 concurrent users.
> > >
> > > Checking the ExecutionLog, out of 500 reports, there are only 40-50
> > > report with very minimal (0.05 msec) overlapped execution start and
> > > end time. The rest were processed in sequential manner.
> > >
> > > I posted the details of the ACT report and my script on the other
> > > thread with the subject "Performance Testing Using ACT", please refer
> > > to the thread for more info.
> > >
> > > What else do I need to look at?
> > >
> > > Really appreciate your comments, thanks!
> > >
> > > CCC
> > >
> > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<#CpCmydiEHA.1384@.TK2MSFTNGP10.phx.gbl>...
> > > > Hi,
> > > >
> > > > You can observe the number of threads by monitoring the Process:Thread
> Count
> > > > counter for aspnet_wp (IIS 5) or w3wp (IIS6). IIS does spawn additional
> > > > threads to handle the load.
> > > >
> > > > You results puzzle me. CPU doesn't go above 50% but you can't get more
> > > > requests. Do you use think time in ACT? I would start with 2 connections
> > > > then add additional connections by number of 2, e.g. 4, 8, 16 to find
> out
> > > > where the server throughput maxes out. Then, you need to find out what
> the
> > > > resource constraint is by looking at various performance counters. RS
> also
> > > > comes with useful performance counters, such as report requests, reports
> > > > executed/sec, etc. Total Rejected Threads is an interesting one in your
> > > > case. "Total number of data processing threads rejected for asynchronous
> > > > processing, and subsequently handled as a synchronous process in the
> same
> > > > thread. Each data source is processed on one thread. If the volume of
> > > > threads exceeds capacity, threads will be rejected for asynchronous
> > > > processing, and will be processed in a serial manner."
> > > >
> > > > Also, did you look at the RS execution log to find out where the time
> goes:
> > > > querying the database, processing the report or rendering it in PDF?
> > > >
> > > > --
> > > > Hope this helps.
> > > >
> > > > ---
> > > > Teo Lachev, MCSD, MCT
> > > > Author: "Microsoft Reporting Services in Action"
> > > > http://www.manning.com/lachev
> > > > Home page and blog http://www.prologika.com
> > > > ---
> > > >
> > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > news:ab9130f9.0408240116.1f8fb8b2@.posting.google.com...
> > > > > Hi Teo,
> > > > >
> > > > > Thank you very much for your inputs.
> > > > >
> > > > > Tried using ACT and created a script with 500 users to test RS but RPS
> > > > > never goes more than 1.5 during the testing. The test took about 10
> > > > > mins to complete and all requests were logged into ExecutionLog as
> > > > > "rsSuccess".
> > > > >
> > > > > Although it was a success run, it seems to me that RS is still
> > > > > rendering the requests 1 by 1 and not in a "multi-thread manner" (but
> > > > > I do believe it should run multi-thread). 10 mins to manage 500 user's
> > > > > requests is unacceptable for the application I'm working on. Btw, CPU
> > > > > usage never goes beyond 50% during the execution of the script with
> > > > > 3GB of RAM in the box.
> > > > >
> > > > > My plan is, starts with 500 users using ACT on a server, then get 4
> > > > > more server to run another 2000 users. After that, increase each
> > > > > server by 100 users from 500 to 1000 and see how it goes.
> > > > > Unfortunately, RPS issue and high Processing Failure counter in
> > > > > Performance monitoring of RS Web Service make me feel so frustrated
> > > > > and don't know what to do.
> > > > >
> > > > > We need to address these 2 issues (RPS & high Processing Failure
> > > > > counter) ASAP to continue with our performance testing. If not, the
> > > > > delay in shipping of this project will affect thousands of user in the
> > > > > upcoming month. I hope MS can do something to help out. Thanks!
> > > > >
> > > > > CCC
> > > > >
> > > > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> > > > > > The Report Server is no different than any other ASP.NET web
> application. It
> > > > > > runs under IIS and processes report request in multi-threaded
> > fashion.
> > As
> > > > > > usual with server-side web applications, CPU is the first resource
> > that
> > will
> > > > > > be maxed out. Therefore, beefing up your report server CPU power
> > should
> > come
> > > > > > as a no-brainer. A dual CPU box (quad recommended) would have
> > probably
> > made
> > > > > > a difference.
> > > > > >
> > > > > > To estimate how well your server configuration meet the user load I
> would
> > > > > > suggest you conduct a capacity planning study. For example, assuming
> that
> > > > > > the 1,000 users will generate 20 reports per hour during normal
> working
> > > > > > hours, the Report Server needs to handle (1000 x 8 x 20) / 3,600 => 45
> > > > > > reports (requests)/sec. Once you establish your performance goal,
> > you
> > could
> > > > > > stress-test the server to find out its maximum throughput, e.g. by
> > using
> > ACT
> > > > > > scripts. As you could see, this is no much different than
> > stress-testing
> > web
> > > > > > applications.
> > > > > >
> > > > > > If the actual server throughput is beyond your expectations, you
> should
> > > > > > first try optimizing your report performance. I found the RS
> > execution
> > log
> > > > > > indispensable for this purpose because it gives you time breakdown
> > of
> > how
> > > > > > much the Report Server has spent fetching the report data,
> > generating
> > and
> > > > > > rendering the report. In addition, don't forget caching. You can
> increase
> > > > > > substantially the server throughput by using different forms of
> > caching.
> > For
> > > > > > example, most likely in your initial tests you didn't pass the
> > session
> > id
> > > > > > with the report requests. However, if the reports are rendered by
> > URL,
> > the
> > > > > > browser will automatically pass the report session id which in many
> cases
> > > > > > could help the Report Server retrieve the report intermediate
> definition
> > > > > > without querying the data source and generating the report anew.
> Execution
> > > > > > caching will speed up things even more because now multiple users
> > can
> > share
> > > > > > the same cached report instance. Same with snapshot caching.
> > > > > >
> > > > > > Finally, to achieve fault tollerance and linear scalability (to a
> > point)
> > you
> > > > > > should consider clustering multiple report servers in a web farm
> > > > > > environment.
> > > > > >
> > > > > > --
> > > > > > Hope this helps.
> > > > > >
> > > > > > ---
> > > > > > Teo Lachev, MCSD, MCT
> > > > > > Author: "Microsoft Reporting Services in Action"
> > > > > > http://www.prologika.com
> > > > > >
> > > > > >
> > > > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > > > news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > > > > > > I created a small program using XMLHTTP to test the performance of
> pdf
> > > > > > > reports rendering. The program basically sends 20-30 XMLHTTP async
> > > > > > > requests with callback function in the format of:
> > > > > > >
> > > > > > > XMLHttpRequest.open "POST", <RS url access>, True
> > > > > > >
> > > > > > > This statement was executed 20-30 times in less than a second to
> test
> > > > > > > if the server can handle multiple request in a short time.
> > > > > > >
> > > > > > > Monitoring the CPU, memory usage and generation of the actual pdf
> > > > > > > files on the server, we noticed that the pdf reports rendering
> were
> > > > > > > processed sequentially because files were generated one after
> another
> > > > > > > and the CPU utilization registered a spike that hits around 50%
> for
> > > > > > > each report. If we count the spikes, it matched the no. of reports
> > > > > > > generated. No other CPU/memory intensive services are running on
> the
> > > > > > > server when we perform the said test. Each generated pdf file is
> about
> > > > > > > 30-40k in size and took about 2-3 sec.
> > > > > > >
> > > > > > > We understand the report rendering time varies because of its
> > > > > > > complexity. But our concern is if this is how RS behaves, when
> there
> > > > > > > are 1000 users requesting for their report, it will take years for
> the
> > > > > > > 1000th user to get their copy generated and displayed on their
> > > > > > > browser.
> > > > > > >
> > > > > > > Is my investigation correct? Anything we can do to improve the
> > > > > > > rendering and reduce the time needed?
> > > > > > >
> > > > > > > Thanks in advance for any assistance/comments!!!
> > > > > > >
> > > > > > >
> > > > > > > CCC|||Hi,
Well, this is more inline with what I would expect. So what conclusions
could you draw from your tests? Here are mine:
1. Obviously, report generation is CPU-intensive task. As you can imaging
generating and rendering the report take quite a bit of CPU cycles.
Therefore, the more CPU power you throw in the better. To get linear
scalabity to a point consider clustering the Report Server. This will also
give fault tollerance.
2. The big unknown is how good 2 RPS are? Assuming 8 hrs working day even 2
RPS will give you about 60,000 reports total per day. That's very healthy
report load if you ask me. So, you may be fine with just 2 RPS. Again, to be
more determinstic you need to do a feasibility study.
3. Consider using report execution caching or report session caching. When
caching is used, the report intermediate format is cached. The data source
is not queried and the report is not processed again. The Report Server only
renders the report because it can be requested in different formats.
Hope this helps.
----
Teo Lachev, MCSD, MCT
Author: "Microsoft Reporting Services in Action"
Publisher website: http://www.manning.com/lachev
Buy it from Amazon.com : http://tinyurl.com/3l49j
Home page and blog: http://www.prologika.com/
----
"CCC" <tommytan25@.yahoo.com> wrote in message
news:ab9130f9.0408260042.2333dd6e@.posting.google.com...
> Just tried using sample reports included in the RS installer, still
> the same behavior.
> ============================================================> URL -
Test.SendRequest("http://abc.xyz.com/ReportServer?/company%20sales&rs:Comman
d=Render&rs:format=html4.0&rc:Toolbar=false")
> No. of concurrent users defined in ACT: 1, 2, 4, 8 ,10, 20
> Test duration run time: 3 mins.
> 1 User -
> RS Server CPU Utilization: 50-60%
> Ave. RPS: 1.07
> 2 Users -
> RS Server CPU Utilization: 70-80% (Drop to 30-40% for the last 0.5
> min)
> Ave. RPS: 2.43 (1-1.5 RPS for the first 2.5 mins, then jump to 8-9 RPS
> for the remaining 0.5 mins)
> 4 Users -
> RS Server CPU Utilization: 95-100% (Drop to 30-40% for the last 20
> sec.)
> Ave. RPS: 3.03 (1-1.5 RPS for the first 2.7 mins, then jump to 16-17
> RPS for the remaining 20 sec)
> ============================================================> URL -
Test.SendRequest("http://staging.atitesting.com/ReportServer?/Product%20Cata
log&rs:Command=Render&rs:format=html4.0&rc:Toolbar=false")
> No. of concurrent users defined in ACT: 1, 2, 4, 8 ,10, 20
> Test duration run time: 3 mins.
> 1 User -
> RS Server CPU Utilization: 7-40% (Up and down for the entire 3 mins.)
> Ave. RPS: 0.26 (0.5-1 RPS)
> 2 Users -
> RS Server CPU Utilization: 20-70% (Up and down for the entire 3 mins.)
> Ave. RPS: 0.41 (0.5-1 RPS)
> 4 Users -
> RS Server CPU Utilization: 20-100% (Up and down for the entire 3
> mins.)
> Ave. RPS: 0.53 (0.5-1.5 RPS)
> Can anybody tell me why is it like that' Hello Microsoft'
> CCC
>
> tommytan25@.yahoo.com (CCC) wrote in message
news:<ab9130f9.0408251851.75145c67@.posting.google.com>...
> > Hi Teo,
> >
> > The version of ACT is 1.0.536.0 that comes with my VS.NET Enterprise.
> >
> > I have 4 servers with ACT installed:
> > * Server A - P4 1.8 GHz & 512RAM
> > * Servers B, C & D - 4 x Xeon 2.8 GHz & 4GB RAM
> > * RS Server - 2 x Xeon 3.06GHz & 3GB RAM (abc.xyz.com)
> > * Each serve has T1 connection to the internet
> >
> >
> > For each server, I created a test script containing only 1 line:
> >
Test.SendRequest("http://abc.xyz.com/ReportServer?/StudentReportCard&rs:Comm
and=Render&rs:format=html4.0&rc:Toolbar=false&UserID=3232")
> >
> > I tried running 5 separate tests using only Server B by setting the
> > simultaneous browser connections in test properties to 20, 100, 150,
> > 200 & 500 (also specify the test duration run time to 3 mins w/ 0
> > warmup time). During the entire 5 tests, RPS always stay at 2-3 RPS
> > (CPU = 90 to 100%) until the tests were ended. I also tried lowering
> > the number of concurrent users as what you said (1, 2, 4, 8, 10, 20),
> > the RPS never changed, it remains between 2-3 RPS regardless of the
> > number of users specified. This is what I got from one of the test
> > with 2 concurrent users defined:
> >
> > ===========================================================> > Properties
> >
> > Test type: Dynamic
> > Simultaneous browser connections: 2
> > Warm up time (secs): 0
> > Test duration: 00:00:03:00
> > Test iterations: 270
> > Detailed test results generated: Yes
> >
> > Summary
> >
> > Total number of requests: 270
> > Total number of connections: 270
> >
> > Average requests per second: 1.50
> > Average time to first byte (msecs): 822.73
> > Average time to last byte (msecs): 1,281.97
> > Average time to last byte per iteration (msecs): 1,281.97
> >
> > Number of unique requests made in test: 1
> > Number of unique response codes: 1
> >
> > Errors Counts
> >
> > HTTP: 0
> > DNS: 0
> > Socket: 0
> >
> > Additional Network Statistics
> >
> > Average bandwidth (bytes/sec): 107,324.83
> >
> > Number of bytes sent (bytes): 120,490
> > Number of bytes received (bytes): 19,197,980
> >
> > Average rate of sent bytes (bytes/sec): 669.39
> > Average rate of received bytes (bytes/sec): 106,655.44
> >
> > Number of connection errors: 0
> > Number of send errors: 0
> > Number of receive errors: 0
> > Number of timeout errors: 0
> >
> > Response Codes
> >
> > Response Code: 200 - The request completed successfully.
> > Count: 270
> > Percent (%): 100.00
> >
> > ===========================================================> >
> > With 2 concurrent users defined in ACT, RS Server's CPU utilization is
> > around 50%. The throughput reached 100% when users were increased to
> > 4. I tried another simple login.asp link of another project on a
> > server over internet (not a RS server/site) with 2000 users using
> > server B and I was able to get 250+ RPS. The only thing I can think of
> > is RS or my report requires more resources or is trying to manage the
> > requests that comes in. That's why regardless of number of users, it
> > only allow 2-3 RPS to avoid bug down. Or, simply some DoS prevention
> > feature is in place that limit the requests to be processed. Comments?
> >
> > The problem here is we were not able to even establish performance
> > metric we need (reducing no. of users to achieve at least 100 RPS).
> > That's why I was thinking if there's anything I need to look at to
> > increase the RPS before I can proceed with further testing.
> >
> > I will try to test the RS sample reports and see if the behaviors are
> > the same...
> >
> > CCC
> >
> >
> > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
news:<eJaAHxpiEHA.536@.TK2MSFTNGP11.phx.gbl>...
> > > OK, tell me a bit more about your ACT testing methodology. First,
which
> > > version of ACT are you using? How do you set up 4 servers with 2000
users?
> > > Second, why do you start with 500 concurrent connections? Please note
that
> > > 500 users means that ACT will try to create a huge number of
background
> > > threads on the ACT client which may be what is causing the delay. What
is
> > > your CPU utilization on the client machine?
> > >
> > > As I said, I would establish a performance metrics in requests/sec.
Then, i
> > > will pump up the server load by factor of 2, but I won't start with
500
> > > users. This is in no way equivalent to 500 users requesting reports
because
> > > you have to factor in the user think time. Intead, I will start with
1, 2,
> > > 4, 8, etc. until I reach the troughput peak. Could you do this and let
me
> > > know at what point the Report Server throughput peaks.
> > >
> > > Does it make sense?
> > >
> > > --
> > > Hope this helps.
> > >
> > > ---
> > > Teo Lachev, MCSD, MCT
> > > Author: "Microsoft Reporting Services in Action"
> > > http://www.manning.com/lachev
> > > Home page and blog http://www.prologika.com
> > > ---
> > >
> > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > news:ab9130f9.0408241732.730edd8b@.posting.google.com...
> > > > Hi Teo,
> > > >
> > > > Thanks for you comments.
> > > >
> > > > Regardless of number of concurrent users I defined in ACT (1 server
> > > > with 500 users or 4 servers with 2000 users to request data from
RS),
> > > > the RS's processor utilization never goes above 50-60%. They system
> > > > doesn't seems to have resource constraint but rather processing
> > > > problem. That's why I'm saying RS is managing the throughput and
> > > > processing the requests sequentially.
> > > >
> > > > - 1 ACT server with 500 concurrent connections took 10mins at 0.8-1
> > > > RPS
> > > > to complete the reports
> > > >
> > > > - 4 ACT server with 500x4 concurrent connections took 16mins at
0.5-1
> > > > RPS to complete the reports
> > > >
> > > > Yes there's a slight drop in the throughput but I was expecting RS
to
> > > > handle more than 1 RPS for both scenarios.
> > > >
> > > > I understand Total Processing Failure and Total Rejected Thread
> > > > counters were 2 different things, the first one is giving more
> > > > headache at thousands mark while the later is manageable between
5-10
> > > > for 500 concurrent users.
> > > >
> > > > Checking the ExecutionLog, out of 500 reports, there are only 40-50
> > > > report with very minimal (0.05 msec) overlapped execution start and
> > > > end time. The rest were processed in sequential manner.
> > > >
> > > > I posted the details of the ACT report and my script on the other
> > > > thread with the subject "Performance Testing Using ACT", please
refer
> > > > to the thread for more info.
> > > >
> > > > What else do I need to look at?
> > > >
> > > > Really appreciate your comments, thanks!
> > > >
> > > > CCC
> > > >
> > > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> > news:<#CpCmydiEHA.1384@.TK2MSFTNGP10.phx.gbl>...
> > > > > Hi,
> > > > >
> > > > > You can observe the number of threads by monitoring the
Process:Thread
> > Count
> > > > > counter for aspnet_wp (IIS 5) or w3wp (IIS6). IIS does spawn
additional
> > > > > threads to handle the load.
> > > > >
> > > > > You results puzzle me. CPU doesn't go above 50% but you can't get
more
> > > > > requests. Do you use think time in ACT? I would start with 2
connections
> > > > > then add additional connections by number of 2, e.g. 4, 8, 16 to
find
> > out
> > > > > where the server throughput maxes out. Then, you need to find out
what
> > the
> > > > > resource constraint is by looking at various performance counters.
RS
> > also
> > > > > comes with useful performance counters, such as report requests,
reports
> > > > > executed/sec, etc. Total Rejected Threads is an interesting one in
your
> > > > > case. "Total number of data processing threads rejected for
asynchronous
> > > > > processing, and subsequently handled as a synchronous process in
the
> > same
> > > > > thread. Each data source is processed on one thread. If the volume
of
> > > > > threads exceeds capacity, threads will be rejected for
asynchronous
> > > > > processing, and will be processed in a serial manner."
> > > > >
> > > > > Also, did you look at the RS execution log to find out where the
time
> > goes:
> > > > > querying the database, processing the report or rendering it in
PDF?
> > > > >
> > > > > --
> > > > > Hope this helps.
> > > > >
> > > > > ---
> > > > > Teo Lachev, MCSD, MCT
> > > > > Author: "Microsoft Reporting Services in Action"
> > > > > http://www.manning.com/lachev
> > > > > Home page and blog http://www.prologika.com
> > > > > ---
> > > > >
> > > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > > news:ab9130f9.0408240116.1f8fb8b2@.posting.google.com...
> > > > > > Hi Teo,
> > > > > >
> > > > > > Thank you very much for your inputs.
> > > > > >
> > > > > > Tried using ACT and created a script with 500 users to test RS
but RPS
> > > > > > never goes more than 1.5 during the testing. The test took about
10
> > > > > > mins to complete and all requests were logged into ExecutionLog
as
> > > > > > "rsSuccess".
> > > > > >
> > > > > > Although it was a success run, it seems to me that RS is still
> > > > > > rendering the requests 1 by 1 and not in a "multi-thread manner"
(but
> > > > > > I do believe it should run multi-thread). 10 mins to manage 500
user's
> > > > > > requests is unacceptable for the application I'm working on.
Btw, CPU
> > > > > > usage never goes beyond 50% during the execution of the script
with
> > > > > > 3GB of RAM in the box.
> > > > > >
> > > > > > My plan is, starts with 500 users using ACT on a server, then
get 4
> > > > > > more server to run another 2000 users. After that, increase each
> > > > > > server by 100 users from 500 to 1000 and see how it goes.
> > > > > > Unfortunately, RPS issue and high Processing Failure counter in
> > > > > > Performance monitoring of RS Web Service make me feel so
frustrated
> > > > > > and don't know what to do.
> > > > > >
> > > > > > We need to address these 2 issues (RPS & high Processing Failure
> > > > > > counter) ASAP to continue with our performance testing. If not,
the
> > > > > > delay in shipping of this project will affect thousands of user
in the
> > > > > > upcoming month. I hope MS can do something to help out. Thanks!
> > > > > >
> > > > > > CCC
> > > > > >
> > > > > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> > news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> > > > > > > The Report Server is no different than any other ASP.NET web
> > application. It
> > > > > > > runs under IIS and processes report request in multi-threaded
> > > fashion.
> > > As
> > > > > > > usual with server-side web applications, CPU is the first
resource
> > > that
> > > will
> > > > > > > be maxed out. Therefore, beefing up your report server CPU
power
> > > should
> > > come
> > > > > > > as a no-brainer. A dual CPU box (quad recommended) would have
> > > probably
> > > made
> > > > > > > a difference.
> > > > > > >
> > > > > > > To estimate how well your server configuration meet the user
load I
> > would
> > > > > > > suggest you conduct a capacity planning study. For example,
assuming
> > that
> > > > > > > the 1,000 users will generate 20 reports per hour during
normal
> > working
> > > > > > > hours, the Report Server needs to handle (1000 x 8 x 20) /
3,600 => > 45
> > > > > > > reports (requests)/sec. Once you establish your performance
goal,
> > > you
> > > could
> > > > > > > stress-test the server to find out its maximum throughput,
e.g. by
> > > using
> > > ACT
> > > > > > > scripts. As you could see, this is no much different than
> > > stress-testing
> > > web
> > > > > > > applications.
> > > > > > >
> > > > > > > If the actual server throughput is beyond your expectations,
you
> > should
> > > > > > > first try optimizing your report performance. I found the RS
> > > execution
> > > log
> > > > > > > indispensable for this purpose because it gives you time
breakdown
> > > of
> > > how
> > > > > > > much the Report Server has spent fetching the report data,
> > > generating
> > > and
> > > > > > > rendering the report. In addition, don't forget caching. You
can
> > increase
> > > > > > > substantially the server throughput by using different forms
of
> > > caching.
> > > For
> > > > > > > example, most likely in your initial tests you didn't pass the
> > > session
> > > id
> > > > > > > with the report requests. However, if the reports are rendered
by
> > > URL,
> > > the
> > > > > > > browser will automatically pass the report session id which in
many
> > cases
> > > > > > > could help the Report Server retrieve the report intermediate
> > definition
> > > > > > > without querying the data source and generating the report
anew.
> > Execution
> > > > > > > caching will speed up things even more because now multiple
users
> > > can
> > > share
> > > > > > > the same cached report instance. Same with snapshot caching.
> > > > > > >
> > > > > > > Finally, to achieve fault tollerance and linear scalability
(to a
> > > point)
> > > you
> > > > > > > should consider clustering multiple report servers in a web
farm
> > > > > > > environment.
> > > > > > >
> > > > > > > --
> > > > > > > Hope this helps.
> > > > > > >
> > > > > > > ---
> > > > > > > Teo Lachev, MCSD, MCT
> > > > > > > Author: "Microsoft Reporting Services in Action"
> > > > > > > http://www.prologika.com
> > > > > > >
> > > > > > >
> > > > > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > > > > news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > > > > > > > I created a small program using XMLHTTP to test the
performance of
> > pdf
> > > > > > > > reports rendering. The program basically sends 20-30 XMLHTTP
async
> > > > > > > > requests with callback function in the format of:
> > > > > > > >
> > > > > > > > XMLHttpRequest.open "POST", <RS url access>, True
> > > > > > > >
> > > > > > > > This statement was executed 20-30 times in less than a
second to
> > test
> > > > > > > > if the server can handle multiple request in a short time.
> > > > > > > >
> > > > > > > > Monitoring the CPU, memory usage and generation of the
actual pdf
> > > > > > > > files on the server, we noticed that the pdf reports
rendering
> > were
> > > > > > > > processed sequentially because files were generated one
after
> > another
> > > > > > > > and the CPU utilization registered a spike that hits around
50%
> > for
> > > > > > > > each report. If we count the spikes, it matched the no. of
reports
> > > > > > > > generated. No other CPU/memory intensive services are
running on
> > the
> > > > > > > > server when we perform the said test. Each generated pdf
file is
> > about
> > > > > > > > 30-40k in size and took about 2-3 sec.
> > > > > > > >
> > > > > > > > We understand the report rendering time varies because of
its
> > > > > > > > complexity. But our concern is if this is how RS behaves,
when
> > there
> > > > > > > > are 1000 users requesting for their report, it will take
years for
> > the
> > > > > > > > 1000th user to get their copy generated and displayed on
their
> > > > > > > > browser.
> > > > > > > >
> > > > > > > > Is my investigation correct? Anything we can do to improve
the
> > > > > > > > rendering and reduce the time needed?
> > > > > > > >
> > > > > > > > Thanks in advance for any assistance/comments!!!
> > > > > > > >
> > > > > > > >
> > > > > > > > CCC|||Hi Teo,
Well, I think this is not an acceptable performance for our
application. We're not looking at how much RS can generate in 1 day
but rather how many concurrent user it can handle at the same time. We
have at least 20-30 user accessing the reports simultaneously using
URL Access and I'm expecting RS can provide at least 10-20 RPS when
requests flow in.
Caching is good but I highly doubt it can be applied to real time
reports we need (real time statistical reports containing data from
10000+ users). I wonder if anyone had performed a similar test as I
did and hope you can give me you opinions.
I understand report rendering requires lots of CPU resources but I'm
just surprised that 2-3 RPS is what RS can handle given I'm using a
dual Xeon processor and 3GB RAM already (comparing to 250+ RPS for a
simple login page on another server with a P4 CPU and 512MB RAM).
Thank you very much Teo for your comments, I believe we need a more
formal explanation from MS to explain what is happening. I tried
running 4 ACT servers at the same time (2000 users in total) and the
RPS has no far difference from running 1 ACT server with 500 users.
Why' We are really suspecting the DoS protection of RS (some guys
from MS told me that) is causing the bottleneck and a small change in
setting should be able to correct this problem. Can any one help?
CCC
"Teo Lachev" <teo@.nospam.prologika.com> wrote in message news:<e6R8Gu5iEHA.384@.TK2MSFTNGP10.phx.gbl>...
> Hi,
> Well, this is more inline with what I would expect. So what conclusions
> could you draw from your tests? Here are mine:
> 1. Obviously, report generation is CPU-intensive task. As you can imaging
> generating and rendering the report take quite a bit of CPU cycles.
> Therefore, the more CPU power you throw in the better. To get linear
> scalabity to a point consider clustering the Report Server. This will also
> give fault tollerance.
> 2. The big unknown is how good 2 RPS are? Assuming 8 hrs working day even 2
> RPS will give you about 60,000 reports total per day. That's very healthy
> report load if you ask me. So, you may be fine with just 2 RPS. Again, to be
> more determinstic you need to do a feasibility study.
> 3. Consider using report execution caching or report session caching. When
> caching is used, the report intermediate format is cached. The data source
> is not queried and the report is not processed again. The Report Server only
> renders the report because it can be requested in different formats.
>
> --
> Hope this helps.
> ----
> Teo Lachev, MCSD, MCT
> Author: "Microsoft Reporting Services in Action"
> Publisher website: http://www.manning.com/lachev
> Buy it from Amazon.com : http://tinyurl.com/3l49j
> Home page and blog: http://www.prologika.com/
> ----
> "CCC" <tommytan25@.yahoo.com> wrote in message
> news:ab9130f9.0408260042.2333dd6e@.posting.google.com...
> > Just tried using sample reports included in the RS installer, still
> > the same behavior.
> > ============================================================> > URL -
> Test.SendRequest("http://abc.xyz.com/ReportServer?/company%20sales&rs:Comman
> d=Render&rs:format=html4.0&rc:Toolbar=false")
> > No. of concurrent users defined in ACT: 1, 2, 4, 8 ,10, 20
> > Test duration run time: 3 mins.
> >
> > 1 User -
> > RS Server CPU Utilization: 50-60%
> > Ave. RPS: 1.07
> >
> > 2 Users -
> > RS Server CPU Utilization: 70-80% (Drop to 30-40% for the last 0.5
> > min)
> > Ave. RPS: 2.43 (1-1.5 RPS for the first 2.5 mins, then jump to 8-9 RPS
> > for the remaining 0.5 mins)
> >
> > 4 Users -
> > RS Server CPU Utilization: 95-100% (Drop to 30-40% for the last 20
> > sec.)
> > Ave. RPS: 3.03 (1-1.5 RPS for the first 2.7 mins, then jump to 16-17
> > RPS for the remaining 20 sec)
> >
> > ============================================================> > URL -
> Test.SendRequest("http://staging.atitesting.com/ReportServer?/Product%20Cata
> log&rs:Command=Render&rs:format=html4.0&rc:Toolbar=false")
> > No. of concurrent users defined in ACT: 1, 2, 4, 8 ,10, 20
> > Test duration run time: 3 mins.
> >
> > 1 User -
> > RS Server CPU Utilization: 7-40% (Up and down for the entire 3 mins.)
> > Ave. RPS: 0.26 (0.5-1 RPS)
> >
> > 2 Users -
> > RS Server CPU Utilization: 20-70% (Up and down for the entire 3 mins.)
> > Ave. RPS: 0.41 (0.5-1 RPS)
> >
> > 4 Users -
> > RS Server CPU Utilization: 20-100% (Up and down for the entire 3
> > mins.)
> > Ave. RPS: 0.53 (0.5-1.5 RPS)
> >
> > Can anybody tell me why is it like that' Hello Microsoft'
> >
> > CCC
> >
> >
> > tommytan25@.yahoo.com (CCC) wrote in message
> news:<ab9130f9.0408251851.75145c67@.posting.google.com>...
> > > Hi Teo,
> > >
> > > The version of ACT is 1.0.536.0 that comes with my VS.NET Enterprise.
> > >
> > > I have 4 servers with ACT installed:
> > > * Server A - P4 1.8 GHz & 512RAM
> > > * Servers B, C & D - 4 x Xeon 2.8 GHz & 4GB RAM
> > > * RS Server - 2 x Xeon 3.06GHz & 3GB RAM (abc.xyz.com)
> > > * Each serve has T1 connection to the internet
> > >
> > >
> > > For each server, I created a test script containing only 1 line:
> > >
> Test.SendRequest("http://abc.xyz.com/ReportServer?/StudentReportCard&rs:Comm
> and=Render&rs:format=html4.0&rc:Toolbar=false&UserID=3232")
> > >
> > > I tried running 5 separate tests using only Server B by setting the
> > > simultaneous browser connections in test properties to 20, 100, 150,
> > > 200 & 500 (also specify the test duration run time to 3 mins w/ 0
> > > warmup time). During the entire 5 tests, RPS always stay at 2-3 RPS
> > > (CPU = 90 to 100%) until the tests were ended. I also tried lowering
> > > the number of concurrent users as what you said (1, 2, 4, 8, 10, 20),
> > > the RPS never changed, it remains between 2-3 RPS regardless of the
> > > number of users specified. This is what I got from one of the test
> > > with 2 concurrent users defined:
> > >
> > > ===========================================================> > > Properties
> > >
> > > Test type: Dynamic
> > > Simultaneous browser connections: 2
> > > Warm up time (secs): 0
> > > Test duration: 00:00:03:00
> > > Test iterations: 270
> > > Detailed test results generated: Yes
> > >
> > > Summary
> > >
> > > Total number of requests: 270
> > > Total number of connections: 270
> > >
> > > Average requests per second: 1.50
> > > Average time to first byte (msecs): 822.73
> > > Average time to last byte (msecs): 1,281.97
> > > Average time to last byte per iteration (msecs): 1,281.97
> > >
> > > Number of unique requests made in test: 1
> > > Number of unique response codes: 1
> > >
> > > Errors Counts
> > >
> > > HTTP: 0
> > > DNS: 0
> > > Socket: 0
> > >
> > > Additional Network Statistics
> > >
> > > Average bandwidth (bytes/sec): 107,324.83
> > >
> > > Number of bytes sent (bytes): 120,490
> > > Number of bytes received (bytes): 19,197,980
> > >
> > > Average rate of sent bytes (bytes/sec): 669.39
> > > Average rate of received bytes (bytes/sec): 106,655.44
> > >
> > > Number of connection errors: 0
> > > Number of send errors: 0
> > > Number of receive errors: 0
> > > Number of timeout errors: 0
> > >
> > > Response Codes
> > >
> > > Response Code: 200 - The request completed successfully.
> > > Count: 270
> > > Percent (%): 100.00
> > >
> > > ===========================================================> > >
> > > With 2 concurrent users defined in ACT, RS Server's CPU utilization is
> > > around 50%. The throughput reached 100% when users were increased to
> > > 4. I tried another simple login.asp link of another project on a
> > > server over internet (not a RS server/site) with 2000 users using
> > > server B and I was able to get 250+ RPS. The only thing I can think of
> > > is RS or my report requires more resources or is trying to manage the
> > > requests that comes in. That's why regardless of number of users, it
> > > only allow 2-3 RPS to avoid bug down. Or, simply some DoS prevention
> > > feature is in place that limit the requests to be processed. Comments?
> > >
> > > The problem here is we were not able to even establish performance
> > > metric we need (reducing no. of users to achieve at least 100 RPS).
> > > That's why I was thinking if there's anything I need to look at to
> > > increase the RPS before I can proceed with further testing.
> > >
> > > I will try to test the RS sample reports and see if the behaviors are
> > > the same...
> > >
> > > CCC
> > >
> > >
> > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<eJaAHxpiEHA.536@.TK2MSFTNGP11.phx.gbl>...
> > > > OK, tell me a bit more about your ACT testing methodology. First,
> which
> > > > version of ACT are you using? How do you set up 4 servers with 2000
> users?
> > > > Second, why do you start with 500 concurrent connections? Please note
> that
> > > > 500 users means that ACT will try to create a huge number of
> background
> > > > threads on the ACT client which may be what is causing the delay. What
> is
> > > > your CPU utilization on the client machine?
> > > >
> > > > As I said, I would establish a performance metrics in requests/sec.
> Then, i
> > > > will pump up the server load by factor of 2, but I won't start with
> 500
> > > > users. This is in no way equivalent to 500 users requesting reports
> because
> > > > you have to factor in the user think time. Intead, I will start with
> 1, 2,
> > > > 4, 8, etc. until I reach the troughput peak. Could you do this and let
> me
> > > > know at what point the Report Server throughput peaks.
> > > >
> > > > Does it make sense?
> > > >
> > > > --
> > > > Hope this helps.
> > > >
> > > > ---
> > > > Teo Lachev, MCSD, MCT
> > > > Author: "Microsoft Reporting Services in Action"
> > > > http://www.manning.com/lachev
> > > > Home page and blog http://www.prologika.com
> > > > ---
> > > >
> > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > news:ab9130f9.0408241732.730edd8b@.posting.google.com...
> > > > > Hi Teo,
> > > > >
> > > > > Thanks for you comments.
> > > > >
> > > > > Regardless of number of concurrent users I defined in ACT (1 server
> > > > > with 500 users or 4 servers with 2000 users to request data from
> RS),
> > > > > the RS's processor utilization never goes above 50-60%. They system
> > > > > doesn't seems to have resource constraint but rather processing
> > > > > problem. That's why I'm saying RS is managing the throughput and
> > > > > processing the requests sequentially.
> > > > >
> > > > > - 1 ACT server with 500 concurrent connections took 10mins at 0.8-1
> > > > > RPS
> > > > > to complete the reports
> > > > >
> > > > > - 4 ACT server with 500x4 concurrent connections took 16mins at
> 0.5-1
> > > > > RPS to complete the reports
> > > > >
> > > > > Yes there's a slight drop in the throughput but I was expecting RS
> to
> > > > > handle more than 1 RPS for both scenarios.
> > > > >
> > > > > I understand Total Processing Failure and Total Rejected Thread
> > > > > counters were 2 different things, the first one is giving more
> > > > > headache at thousands mark while the later is manageable between
> 5-10
> > > > > for 500 concurrent users.
> > > > >
> > > > > Checking the ExecutionLog, out of 500 reports, there are only 40-50
> > > > > report with very minimal (0.05 msec) overlapped execution start and
> > > > > end time. The rest were processed in sequential manner.
> > > > >
> > > > > I posted the details of the ACT report and my script on the other
> > > > > thread with the subject "Performance Testing Using ACT", please
> refer
> > > > > to the thread for more info.
> > > > >
> > > > > What else do I need to look at?
> > > > >
> > > > > Really appreciate your comments, thanks!
> > > > >
> > > > > CCC
> > > > >
> > > > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<#CpCmydiEHA.1384@.TK2MSFTNGP10.phx.gbl>...
> > > > > > Hi,
> > > > > >
> > > > > > You can observe the number of threads by monitoring the
> Process:Thread
> Count
> > > > > > counter for aspnet_wp (IIS 5) or w3wp (IIS6). IIS does spawn
> additional
> > > > > > threads to handle the load.
> > > > > >
> > > > > > You results puzzle me. CPU doesn't go above 50% but you can't get
> more
> > > > > > requests. Do you use think time in ACT? I would start with 2
> connections
> > > > > > then add additional connections by number of 2, e.g. 4, 8, 16 to
> find
> out
> > > > > > where the server throughput maxes out. Then, you need to find out
> what
> the
> > > > > > resource constraint is by looking at various performance counters.
> RS
> also
> > > > > > comes with useful performance counters, such as report requests,
> reports
> > > > > > executed/sec, etc. Total Rejected Threads is an interesting one in
> your
> > > > > > case. "Total number of data processing threads rejected for
> asynchronous
> > > > > > processing, and subsequently handled as a synchronous process in
> the
> same
> > > > > > thread. Each data source is processed on one thread. If the volume
> of
> > > > > > threads exceeds capacity, threads will be rejected for
> asynchronous
> > > > > > processing, and will be processed in a serial manner."
> > > > > >
> > > > > > Also, did you look at the RS execution log to find out where the
> time
> goes:
> > > > > > querying the database, processing the report or rendering it in
> PDF?
> > > > > >
> > > > > > --
> > > > > > Hope this helps.
> > > > > >
> > > > > > ---
> > > > > > Teo Lachev, MCSD, MCT
> > > > > > Author: "Microsoft Reporting Services in Action"
> > > > > > http://www.manning.com/lachev
> > > > > > Home page and blog http://www.prologika.com
> > > > > > ---
> > > > > >
> > > > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > > > news:ab9130f9.0408240116.1f8fb8b2@.posting.google.com...
> > > > > > > Hi Teo,
> > > > > > >
> > > > > > > Thank you very much for your inputs.
> > > > > > >
> > > > > > > Tried using ACT and created a script with 500 users to test RS
> but RPS
> > > > > > > never goes more than 1.5 during the testing. The test took about
> 10
> > > > > > > mins to complete and all requests were logged into ExecutionLog
> as
> > > > > > > "rsSuccess".
> > > > > > >
> > > > > > > Although it was a success run, it seems to me that RS is still
> > > > > > > rendering the requests 1 by 1 and not in a "multi-thread manner"
> (but
> > > > > > > I do believe it should run multi-thread). 10 mins to manage 500
> user's
> > > > > > > requests is unacceptable for the application I'm working on.
> Btw, CPU
> > > > > > > usage never goes beyond 50% during the execution of the script
> with
> > > > > > > 3GB of RAM in the box.
> > > > > > >
> > > > > > > My plan is, starts with 500 users using ACT on a server, then
> get 4
> > > > > > > more server to run another 2000 users. After that, increase each
> > > > > > > server by 100 users from 500 to 1000 and see how it goes.
> > > > > > > Unfortunately, RPS issue and high Processing Failure counter in
> > > > > > > Performance monitoring of RS Web Service make me feel so
> frustrated
> > > > > > > and don't know what to do.
> > > > > > >
> > > > > > > We need to address these 2 issues (RPS & high Processing Failure
> > > > > > > counter) ASAP to continue with our performance testing. If not,
> the
> > > > > > > delay in shipping of this project will affect thousands of user
> in the
> > > > > > > upcoming month. I hope MS can do something to help out. Thanks!
> > > > > > >
> > > > > > > CCC
> > > > > > >
> > > > > > > "Teo Lachev" <teo@.nospam.prologika.com> wrote in message
> news:<eKBIr35fEHA.3024@.TK2MSFTNGP10.phx.gbl>...
> > > > > > > > The Report Server is no different than any other ASP.NET web
> application. It
> > > > > > > > runs under IIS and processes report request in multi-threaded
> > > > fashion.
> > > > As
> > > > > > > > usual with server-side web applications, CPU is the first
> resource
> > > > that
> > > > will
> > > > > > > > be maxed out. Therefore, beefing up your report server CPU
> power
> > > > should
> > > > come
> > > > > > > > as a no-brainer. A dual CPU box (quad recommended) would have
> > > > probably
> > > > made
> > > > > > > > a difference.
> > > > > > > >
> > > > > > > > To estimate how well your server configuration meet the user
> load I
> would
> > > > > > > > suggest you conduct a capacity planning study. For example,
> assuming
> that
> > > > > > > > the 1,000 users will generate 20 reports per hour during
> normal
> working
> > > > > > > > hours, the Report Server needs to handle (1000 x 8 x 20) /
> 3,600 => 45
> > > > > > > > reports (requests)/sec. Once you establish your performance
> goal,
> > > > you
> > > > could
> > > > > > > > stress-test the server to find out its maximum throughput,
> e.g. by
> > > > using
> > > > ACT
> > > > > > > > scripts. As you could see, this is no much different than
> > > > stress-testing
> > > > web
> > > > > > > > applications.
> > > > > > > >
> > > > > > > > If the actual server throughput is beyond your expectations,
> you
> should
> > > > > > > > first try optimizing your report performance. I found the RS
> > > > execution
> > > > log
> > > > > > > > indispensable for this purpose because it gives you time
> breakdown
> > > > of
> > > > how
> > > > > > > > much the Report Server has spent fetching the report data,
> > > > generating
> > > > and
> > > > > > > > rendering the report. In addition, don't forget caching. You
> can
> increase
> > > > > > > > substantially the server throughput by using different forms
> of
> > > > caching.
> > > > For
> > > > > > > > example, most likely in your initial tests you didn't pass the
> > > > session
> > > > id
> > > > > > > > with the report requests. However, if the reports are rendered
> by
> > > > URL,
> > > > the
> > > > > > > > browser will automatically pass the report session id which in
> many
> cases
> > > > > > > > could help the Report Server retrieve the report intermediate
> definition
> > > > > > > > without querying the data source and generating the report
> anew.
> Execution
> > > > > > > > caching will speed up things even more because now multiple
> users
> > > > can
> > > > share
> > > > > > > > the same cached report instance. Same with snapshot caching.
> > > > > > > >
> > > > > > > > Finally, to achieve fault tollerance and linear scalability
> (to a
> > > > point)
> > > > you
> > > > > > > > should consider clustering multiple report servers in a web
> farm
> > > > > > > > environment.
> > > > > > > >
> > > > > > > > --
> > > > > > > > Hope this helps.
> > > > > > > >
> > > > > > > > ---
> > > > > > > > Teo Lachev, MCSD, MCT
> > > > > > > > Author: "Microsoft Reporting Services in Action"
> > > > > > > > http://www.prologika.com
> > > > > > > >
> > > > > > > >
> > > > > > > > "CCC" <tommytan25@.yahoo.com> wrote in message
> > > > > > > > news:ab9130f9.0408101717.3691b8fd@.posting.google.com...
> > > > > > > > > I created a small program using XMLHTTP to test the
> performance of
> pdf
> > > > > > > > > reports rendering. The program basically sends 20-30 XMLHTTP
> async
> > > > > > > > > requests with callback function in the format of:
> > > > > > > > >
> > > > > > > > > XMLHttpRequest.open "POST", <RS url access>, True
> > > > > > > > >
> > > > > > > > > This statement was executed 20-30 times in less than a
> second to
> test
> > > > > > > > > if the server can handle multiple request in a short time.
> > > > > > > > >
> > > > > > > > > Monitoring the CPU, memory usage and generation of the
> actual pdf
> > > > > > > > > files on the server, we noticed that the pdf reports
> rendering
> were
> > > > > > > > > processed sequentially because files were generated one
> after
> another
> > > > > > > > > and the CPU utilization registered a spike that hits around
> 50%
> for
> > > > > > > > > each report. If we count the spikes, it matched the no. of
> reports
> > > > > > > > > generated. No other CPU/memory intensive services are
> running on
> the
> > > > > > > > > server when we perform the said test. Each generated pdf
> file is
> about
> > > > > > > > > 30-40k in size and took about 2-3 sec.
> > > > > > > > >
> > > > > > > > > We understand the report rendering time varies because of
> its
> > > > > > > > > complexity. But our concern is if this is how RS behaves,
> when
> there
> > > > > > > > > are 1000 users requesting for their report, it will take
> years for
> the
> > > > > > > > > 1000th user to get their copy generated and displayed on
> their
> > > > > > > > > browser.
> > > > > > > > >
> > > > > > > > > Is my investigation correct? Anything we can do to improve
> the
> > > > > > > > > rendering and reduce the time needed?
> > > > > > > > >
> > > > > > > > > Thanks in advance for any assistance/comments!!!
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > CCC