CrossTab System.OutOfMemory

Обсуждение Stimulsoft Reports.NET
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: CrossTab System.OutOfMemory

Сообщение HighAley »

Здравствуйте, Леонид.

Мы сделали небольшую оптимизацию. Теперь памяти расходуется примерно в 1,5 раза меньше.
Есть некоторые ограничения движка Cross-tab, которые не позволяют сделать дальнейшую оптимизацию.
Движок требует полной переписки. Эта задача в нашем to-do списке. Она требует больших трудозатрат и может вызвать множество новых и уже решённых старых проблем.
Пока мы не можем больше ничего сделать. Проверьте наш следующий предрелизный билд.

Спасибо.
Леонид
Сообщения: 329
Зарегистрирован: 23 июл 2009, 09:53
Откуда: Moscow

Re: CrossTab System.OutOfMemory

Сообщение Леонид »

Добрый день!

Скомпилировали копию проекта под версию 2015.1.0.0. Выводы такие: действительно стало быстрее, и можно выбрать данные за бОльший период. Однако, выборка данных даже за два месяца (данных опять-таки там немного, о чём мы говорили с вами в предыдущих постах) даёт тоже самое исключение. На данный момент такой расклад пока устраивает наших пользователей данного отчёта, но мы пока не планируем переходить на версию x64, да и больше 4 Gb RAM ни у кого из пользователей не стоит.

В любом случае, в ближайшее время перейдём на последнюю версию. Спасибо!
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: CrossTab System.OutOfMemory

Сообщение HighAley »

Здравствуйте, Леонид.

Пишите, если нужна будет дополнительная помощь.

Спасибо.
Леонид
Сообщения: 329
Зарегистрирован: 23 июл 2009, 09:53
Откуда: Moscow

Re: CrossTab System.OutOfMemory

Сообщение Леонид »

Добрый вечер!

Снова возникла проблема OutOfMemory на отчётах с CrossTab'ами.

Коротко о главном. Возникает на Core2Duo Win7 x32 с 2 Gb RAM, на i3 Win7 x64 с 4 Gb RAM проблема не появляется. Между тем, тестировал на своём i7 18Gb RAM и Win10 x64, - удивительно, но проблема так же появляется.

Наши пользователи жалуются, что не могут вывести большой отчёт за год. Для примера можно взять тот же отчёт из архива, который я прикреплял к одному из постов в этой ветке, и скопировать data.xml несколько раз сам в себя, чтобы из 44Mb получилось примерно 450Mb.

То есть, по сути, проблема даже не в памяти, т.к. на 18 Gb мы получаем fail.

Запускаем, получаем ошибку, как на скриншоте в приложении.
Да, мы помним, что вы говорили, о том, что:
Мы сделали небольшую оптимизацию. Теперь памяти расходуется примерно в 1,5 раза меньше.
Есть некоторые ограничения движка Cross-tab, которые не позволяют сделать дальнейшую оптимизацию.
Движок требует полной переписки. Эта задача в нашем to-do списке. Она требует больших трудозатрат и может вызвать множество новых и уже решённых старых проблем.
Пока мы не можем больше ничего сделать. Проверьте наш следующий предрелизный билд.
Билд почти последний, а именно 2016.1.12.0. Но это не решает нашу проблему в данном случае, т.к. пользователи жалуются, и это не один и не два человека, в регионах у нас много относительно старого железа, которое пока не планируют обновлять.

Что можно сделать в данном случае? Возможно ли использование файла подкачки при рендеринге отчётов, когда основная (RAM) заканчивается, чтобы не получать OutOfMemoryException.
Вложения
exception.jpg
exception.jpg (139.67 КБ) 5890 просмотров
stack_trace.txt
(2.93 КБ) 543 скачивания
Леонид
Сообщения: 329
Зарегистрирован: 23 июл 2009, 09:53
Откуда: Moscow

Re: CrossTab System.OutOfMemory

Сообщение Леонид »

Добрый день!

Провели ещё некоторые эксперименты. Сделали полностью рабочий пример, однако, когда вынесли его в отдельный совсем простой проект для запуска, почему-то при рендеринге пишет "Column 0 not found", в остальном он полностью рабочий, т.е. отчёт взят из реальной базы, как и данные (только немного "обсусцированные").

Пример в приложении, в директории \bin содержит следующие файлы:

1) data.mrt (сам отчёт);
2) data.xml (данные в .xml (~189Mb, это реальная выборка за год, только данные взяли рандомные по некоторым полям, т.к. мы не можем их "светить"));
3) data.xsd (схема данных);
4) data.dct (словарь данных).
Вложения
StiCrossTabTest3.7z
Тестовый пример
(1.12 МБ) 279 скачиваний
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: CrossTab System.OutOfMemory

Сообщение Aleksey »

Здравствуйте,

Спасибо за детальное описание проблемы.
Необходимо некоторое время для анализа.

Спасибо.
Леонид
Сообщения: 329
Зарегистрирован: 23 июл 2009, 09:53
Откуда: Moscow

Re: CrossTab System.OutOfMemory

Сообщение Леонид »

Добрый день!

Попробовали установить перед запуском отчёта вот этот (рекомендованный вами) код:

Код: Выделить всё

      StiOptions.Engine.ReportCache.AmountOfProcessedPagesForStartGCCollect = 2; // default 20
      StiOptions.Engine.ReportCache.AmountOfQuickAccessPages = 5; // default 50
Но увы, не помогло.
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: CrossTab System.OutOfMemory

Сообщение Aleksey »

Здравствуйте,

Мы работаем над данной проблемой.
Так же на данный момент, мы делаем полный рефакторинг компонента Кросс-Таблица. Уже много моментов оптимизировано и исправлено.
В течении нескольких билдов изменения будут доступны.


Спасибо.
Леонид
Сообщения: 329
Зарегистрирован: 23 июл 2009, 09:53
Откуда: Moscow

Re: CrossTab System.OutOfMemory

Сообщение Леонид »

Добрый день!

Сообщите, пожалуйста, здесь, когда изменения будут доступны для скачивания в соответствующем билде.
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: CrossTab System.OutOfMemory

Сообщение Aleksey »

Здравствуйте,

Мы еще работаем над данной проблемой.

Также были сделаны некоторые фиксы, улучшения по построению Кросс-Таблицы. Будут доступны в следующем билде сегодня.

Спасибо.
Ответить