Страница 2 из 5

Re: CrossTab System.OutOfMemory

Добавлено: 30 апр 2015, 08:49
HighAley
Здравствуйте, Леонид.

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

Спасибо.

Re: CrossTab System.OutOfMemory

Добавлено: 12 май 2015, 14:02
Леонид
Добрый день!

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

В любом случае, в ближайшее время перейдём на последнюю версию. Спасибо!

Re: CrossTab System.OutOfMemory

Добавлено: 13 май 2015, 14:22
HighAley
Здравствуйте, Леонид.

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

Спасибо.

Re: CrossTab System.OutOfMemory

Добавлено: 19 янв 2017, 18:11
Леонид
Добрый вечер!

Снова возникла проблема 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.

Re: CrossTab System.OutOfMemory

Добавлено: 20 янв 2017, 12:19
Леонид
Добрый день!

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

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

1) data.mrt (сам отчёт);
2) data.xml (данные в .xml (~189Mb, это реальная выборка за год, только данные взяли рандомные по некоторым полям, т.к. мы не можем их "светить"));
3) data.xsd (схема данных);
4) data.dct (словарь данных).

Re: CrossTab System.OutOfMemory

Добавлено: 23 янв 2017, 13:44
Aleksey
Здравствуйте,

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

Спасибо.

Re: CrossTab System.OutOfMemory

Добавлено: 26 янв 2017, 16:29
Леонид
Добрый день!

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

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

      StiOptions.Engine.ReportCache.AmountOfProcessedPagesForStartGCCollect = 2; // default 20
      StiOptions.Engine.ReportCache.AmountOfQuickAccessPages = 5; // default 50
Но увы, не помогло.

Re: CrossTab System.OutOfMemory

Добавлено: 27 янв 2017, 15:44
Aleksey
Здравствуйте,

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


Спасибо.

Re: CrossTab System.OutOfMemory

Добавлено: 03 фев 2017, 10:37
Леонид
Добрый день!

Сообщите, пожалуйста, здесь, когда изменения будут доступны для скачивания в соответствующем билде.

Re: CrossTab System.OutOfMemory

Добавлено: 03 фев 2017, 15:38
Aleksey
Здравствуйте,

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

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

Спасибо.