This is a migrated thread and some comments may be shown as answers.

Best practice & performance query

1 Answer 147 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Gavin Palmer
Top achievements
Rank 1
Gavin Palmer asked on 09 Sep 2014, 02:47 PM
Hi All,

I have a general question about report structure and performance with the web viewer in .NET webforms.

Backgound:
==============
We have a report which need to display >330 'parent' rows. This report contains 4 sub reports, and the sub reports can contain 20-30 fields. Each sub report will show 'a number' of 'child' records (anything from 0-50) as an example.

The parent data source has all the child data attached and the sub reports use the same data source, with a parameter applied to filter the data to the current 'parentid'.

The total number of parent plus child records is approximately 2000.

Problem:
=============
After the data has been retrieved from the db (<1 second) and the report has had its data sources bound (~1-2 seconds), the next step is the rending of the report. This at the moment takes ~17 minutes on our live server.
Our live server is a quad core with 4GB RAM.

Additionally, CPU usage on both processors sits at 100% and memory at 4GB. When the report finishes running, the IIS worker process on the server drops down to 150-200MB memory usage, but the server memory usage stays at 4GB. If I reboot the server or IIS, the memory sits at < 1GB until I run the report again.
It feels like a leak, but I'm not able to put my finger on it at the moment.

This rendering performance is obviously 'undesirable' to say the least!

Question(s):
=============

1. With this quantity of data should we be experiencing this render speed? Whilst I wouldn't expect lightning performance < 1-2 minutes would seem more realistic for this quantity.

2. Having read the performance guidelines, I have shortlisted some areas we'd have available to us, could you prioritise which we may expect to see the greater benefit from?

a) We could attempt to reduce the complexity of the report by lowering the number of fields in the sub reports. Some may be able to be combined, or we may be able to concatenate the data on the server to reduce the number of controls.
b) We could attempt to remove the sub reports, and display tables as part of the original report, as described by the performance tips section.
c) We could maybe try to subset the data of the child reports somehow rather than pulling the whole lot and using the parameter on the original data source
d) We could write our own paged report viewer (but this seems to negate the value of using telerik as a report viewer), Having a look, there doesn't seem an in built way to incorporate server side paging into the report viewer (is this still the case?)

Any advice in this area would be greatly appreciated,

Kind Regards



1 Answer, 1 is accepted

Sort by
0
Hinata
Top achievements
Rank 1
answered on 12 Sep 2014, 10:32 AM
Hello Gavin,

Why don't you try following the performance considerations suggestions one by one and see which will work best in your scenario?
You may actually need to implement more than one, but I'd personally start with replacing the SubReports with Tables.
Tags
General Discussions
Asked by
Gavin Palmer
Top achievements
Rank 1
Answers by
Hinata
Top achievements
Rank 1
Share this question
or