Страница 1 из 1

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 18 фев 2009, 08:16
eroshkin
При построении таблицы в stiWebViewer по выборке около 5,5 тыс. строк, компонент либо показывает чистый лист, либо валится
Exception of type 'System.OutOfMemoryException' was thrown.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

Source Error:


Line 18: protected void Page_Load(object sender, EventArgs e)
Line 19: {
Line 20: this.ReportViewer.Report = this.CreateReport(@"IM\PropStatusIncum.mrt");
Line 21: }
Line 22:


Source File: d:\Work\Projects\CPDB\trunk\src_Tsk\Source\TNKBP-CPDB Web\Pages\Reports\IM\Encum.aspx.cs Line: 20

Stack Trace:


[OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.]
System.IO.MemoryStream.set_Capacity(Int32 value) +63
System.IO.MemoryStream.EnsureCapacity(Int32 value) +55
System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) +245
System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) +95
System.IO.StreamWriter.Write(String value) +109
System.Xml.XmlTextWriter.WriteStartAttribute(String prefix, String localName, String ns) +1073
System.Xml.XmlWriter.WriteAttributeString(String localName, String value) +21
Stimulsoft.Report.Components.StiText.Serialize(StiObjectStringConverter converter, XmlTextWriter tw) +714
Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +603
Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154
Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +780
Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154
Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +661
Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154
Stimulsoft.Base.Serializing.StiSerializing.SerializeProperty(XmlTextWriter tw, StiPropertyInfo prop) +780
Stimulsoft.Base.Serializing.StiSerializing.SerializeObject(XmlTextWriter tw, StiPropertyInfoCollection props) +154
Stimulsoft.Base.Serializing.StiSerializing.Serialize(Object obj, Stream stream, String application, StiSerializeTypes serializeType) +269
Stimulsoft.Report.SaveLoad.StiXmlDocumentSLService.Save(StiReport report, Stream stream) +386
Stimulsoft.Report.StiReport.SaveDocument(StiDocumentSLService service, Stream stream) +126
Stimulsoft.Report.StiReport.SaveDocument(Stream stream) +41
Stimulsoft.Report.StiReport.SaveDocumentToString() +205
Stimulsoft.Report.StiReport.SavePackedDocumentToString() +10
Stimulsoft.Report.Web.StiWebViewer.ProcessReport() +862
Stimulsoft.Report.Web.StiWebViewer.set_Report(StiReport value) +98
TNKBP_CPDB.Web.Pages.Reports.UL.Encum.Page_Load(Object sender, EventArgs e) in d:\Work\Projects\CPDB\trunk\src_Tsk\Source\TNKBP-CPDB Web\Pages\Reports\IM\Encum.aspx.cs:20
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 18 фев 2009, 08:25
eroshkin
при смене режима рендеринга на RenderMode="RenderOnlyCurrentPage" стал строится.
- Однако, не работает переход на заданную страницу, вернее дальше 4 не переходит.
- При экспорте у Excel сохраняется только 3 страницы, начиная с текущей.
- При экспорте в PDF сохранилось 10 страниц (229 строк из 5000+) из них 7 просто пустые листы

у меня версия 2008.2 триал

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 18 фев 2009, 10:25
Edward
Здравствуйте.

Вероятнее всего при построении отчета заканчивается память после 3 страницы. Проверьте, не используются ли у Вас картинки очень большого размера в отчете?

Также если отчет имеет более 100 страниц, то есть смысл как-то уменьшить его размер, поскольку большие отчеты в Web приводят к неоправданно большому использованию памяти.

Спасибо.

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 18 фев 2009, 14:35
eroshkin
Размер отчета - 235 стр. Картинок нет вообще.

Мда. Очень грустное назадекларированное ограничение.

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 19 фев 2009, 04:15
Edward
Здравствуйте.

Да действительно, Ваш отчет имеет совсем не сложный и не отягощенный тяжелой графикой. Возможен ли тестовый проект, который иллюстрирует проблему?

Если да, то вышлите его, пожалуйста, на support[at]stimulsoft.com.

Спасибо.

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 05 мар 2010, 09:50
VitHnat
Добрый день, та же проблема > 4000 строк - WebViewer вылетает с Exception of type 'System.OutOfMemoryException' was thrown. Установлено Stimulsoft Reports.Ultimate 2009.3 Trial - которую и собираемся приобрести. Будет ли WebViewer работать на х64 ОС - так как на х86 ХР SP3 с 4Гб ОП сгенерировало отчет только с /3GB в boot.ini - и то только раз с приб. десяти попыток - так как с /3GB система крайне нестабильна. Опишите пожалуйста что приблизительно нужно для вынесения генерации и рендеринга\превью на отдельную машину повторюсь с х64 ОС.

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 05 мар 2010, 12:38
Andrew
Здравствуйте,

Пришлите, пожалуйста, нам Ваш пример отчета с данными, а лучше sample project для тестирования на support@stimulsoft.com . По Вашему письму пока не совсем понятна причина нехватки памяти.

Спасибо.

Проблемы при отображении резалтсетов с большим количеством строк

Добавлено: 09 мар 2010, 17:53
Jan
Здравствуйте Виталий,

Построение отчета у Вас происходит в событии PageLoad страницы. В данном режиме крайне нежелательно использовать режимы с кэшированием StiWebViewer. Поскольку отчет будет перестраиваться при каждом обновлении страницы, и при этом StiWebViewer будет сохранять построенный отчет в кэше страницы (или сессии). Именно кэширование отчета в Вашем случае съедает большую часть памяти (на Вашем примере, на тестовой машине съело около 70%). Измените свойство RenderMode StiWebViewer со значения AjaxWithCache на просто Ajax. В данном случае отчет не будет сохраняться при каждом перестроении, но отчет нужно будет перестраивать при каждом обновлении страницы (что скажется на скорости). Также стоит учитывать при использовании режима с кэшированием время, на которое отчет будет сохраняться отчет в кэше (задается свойством ServerTimeOut). При большом количестве одновременных обращений, память можно забить даже маленькими отчетами.

Также рекомендую Вам обновить папку с картинками экспортов и кнопок, т.к. она не полная. Архив в приложении.

Кроме этого я рекомендую обратить внимание на StiWebViewerFx вьювер отчетов. Достаточно новый вьювер для Web. Поставляется в комлекте с Reports.Web и Ultimate. Благодаря использованию Flash он обладает большим динамизмом и лучшим GUI. А кроме этого возлагает проблемы по хранению отчета для просмотра на клиент а не на сервер.

Еще посмотрите на тикет на нашем форуме http://forum.stimulsoft.com/Default.aspx?g=posts&t=142
В этом тикете подробно объясняется почему возникает утечки памяти при компиляции отчетов в событии PageLoad (не могу сказать критично это для Вас или нет) и как переделать код для того, чтобы они не возникали.

Дайте знать если понадобится помощь.

Спасибо.