OutOfMemoryException при экспорте большого PDF
OutOfMemoryException при экспорте большого PDF
Добрый день!
Мы формируем платежные документы в виде PDF
при формировании PDF на 2000 страниц, наше приложение падает с ошибкой переполнения heap (OutOfMemoryException). На данный момент ограничение стоит в 8Гб.
Подскажите, пожалуйста, какие требования к серверу, который делает эту операцию? Сколько необходимо памяти для реализации нашей задачи?
Шаблон отчета во вложении. Возможно, вы сможете предложить альтернативную компоновку для менее ресурсоемкого экспорта в PDF. Или, быть может, предложите более оптимальный источник (на данный момент мы используем json, который формирует другой сервис).
код, выполняющий экспорт:
report = StiSerializeManager.deserializeReport(reportStream);
report.getDictionary().getDatabases().clear();
report.getDictionary().getDatabases().add(jsonDatabase);
report.setCalculationMode(StiCalculationMode.Interpretation);
report.Render(false);
report.exportDocument(StiExportFormat.Pdf, exportService, file, exportSettings, null);
библиотека: 'com.stimulsoft:stimulsoft-reports-libs:2024.2.2'
кстати, обратили внимание на то, что после генерации файла, СтимулСофт не освобождает неиспользуемую память. Нам приходится использовать напрямую сборщик мусора (System.gc()), что является плохой практикой. Ведутся ли в этом направлении какие-то работы, возможны ли оптимизации в ближайших релизах?
Спасибо.
С уважением, Маргарита
Мы формируем платежные документы в виде PDF
при формировании PDF на 2000 страниц, наше приложение падает с ошибкой переполнения heap (OutOfMemoryException). На данный момент ограничение стоит в 8Гб.
Подскажите, пожалуйста, какие требования к серверу, который делает эту операцию? Сколько необходимо памяти для реализации нашей задачи?
Шаблон отчета во вложении. Возможно, вы сможете предложить альтернативную компоновку для менее ресурсоемкого экспорта в PDF. Или, быть может, предложите более оптимальный источник (на данный момент мы используем json, который формирует другой сервис).
код, выполняющий экспорт:
report = StiSerializeManager.deserializeReport(reportStream);
report.getDictionary().getDatabases().clear();
report.getDictionary().getDatabases().add(jsonDatabase);
report.setCalculationMode(StiCalculationMode.Interpretation);
report.Render(false);
report.exportDocument(StiExportFormat.Pdf, exportService, file, exportSettings, null);
библиотека: 'com.stimulsoft:stimulsoft-reports-libs:2024.2.2'
кстати, обратили внимание на то, что после генерации файла, СтимулСофт не освобождает неиспользуемую память. Нам приходится использовать напрямую сборщик мусора (System.gc()), что является плохой практикой. Ведутся ли в этом направлении какие-то работы, возможны ли оптимизации в ближайших релизах?
Спасибо.
С уважением, Маргарита
- Вложения
-
- Report_UPD.mrt
- (685.07 КБ) 66 скачиваний
-
- Report_short_PD.mrt
- (669.03 КБ) 66 скачиваний
С уважением, Маргарита Шаймиева
Re: OutOfMemoryException при экспорте большого PDF
Здравствуйте.
Вы можете установить оптимизацию по памяти - отчет будет генерироваться медленнее, но расходовать меньше оперативной памяти.
Используйте свойство report.setReportCacheMode(StiReportCacheMode.On или StiReportCacheMode.Auto)
Вы можете установить оптимизацию по памяти - отчет будет генерироваться медленнее, но расходовать меньше оперативной памяти.
Используйте свойство report.setReportCacheMode(StiReportCacheMode.On или StiReportCacheMode.Auto)
Re: OutOfMemoryException при экспорте большого PDF
Мы попробовали StiReportCacheMode.On
памяти действительно потребляет меньше. Однако теперь пишет ошибку: Unable to access image with URL: resource://Image2
и не выводит картинку в футере сформированного PDF. файл с изображением в ресурсах имеется, и если отключить кэшмод, то изображение прекрасно выводится в футере документа
для кэшмода как-то по-другому нужно ресурс для изображения указывать?
памяти действительно потребляет меньше. Однако теперь пишет ошибку: Unable to access image with URL: resource://Image2
и не выводит картинку в футере сформированного PDF. файл с изображением в ресурсах имеется, и если отключить кэшмод, то изображение прекрасно выводится в футере документа
для кэшмода как-то по-другому нужно ресурс для изображения указывать?
С уважением, Маргарита Шаймиева
Re: OutOfMemoryException при экспорте большого PDF
Здравствуйте,
Нужно дополнительное время для анализа проблемы.
Спасибо.
Нужно дополнительное время для анализа проблемы.
Спасибо.
Re: OutOfMemoryException при экспорте большого PDF
Здравствуйте.
Пришлите пожалуйста полный стек ошибки.
Пришлите пожалуйста полный стек ошибки.
Re: OutOfMemoryException при экспорте большого PDF
Добрый день!
строка, содержащая ошибку:
{"@timestamp":"2024-12-05T11:19:07.26807989+03:00","@version":"1","message":"Unable to access image with URL: resource://logo_backspark","logger_name":"com.stimulsoft.report.components.simplecomponents.StiImage","thread_name":"batch_thread-2","level":"WARN","level_value":30000}
это все, что выдает сервис. Возможно, требуется подключить детальное логирование?
во вложении находятся три файла: 2 файла с логами в разном формате и источник в формате json для документа в 150стр. Было зафиксировано, что проблема возникает именно при экспорте большого объема данных.
Спасибо.
строка, содержащая ошибку:
{"@timestamp":"2024-12-05T11:19:07.26807989+03:00","@version":"1","message":"Unable to access image with URL: resource://logo_backspark","logger_name":"com.stimulsoft.report.components.simplecomponents.StiImage","thread_name":"batch_thread-2","level":"WARN","level_value":30000}
это все, что выдает сервис. Возможно, требуется подключить детальное логирование?
во вложении находятся три файла: 2 файла с логами в разном формате и источник в формате json для документа в 150стр. Было зафиксировано, что проблема возникает именно при экспорте большого объема данных.
Спасибо.
- Вложения
-
- ua_pack_002_150.json
- проблема возникает при экспорте большого числа страниц. приложен источник на 150 стр
- (671.32 КБ) 40 скачиваний
-
- Logs-data-2024-12-05 12_24_50_logo.csv
- логи в тексте с разделителями
- (1.08 МБ) 39 скачиваний
-
- Logs-data-2024-12-05 12_24_50_logo.xls
- логи в формате эксель
- (1.14 МБ) 41 скачивание
С уважением, Маргарита Шаймиева
Re: OutOfMemoryException при экспорте большого PDF
Здравствуйте,
Нужно дополнительное время для анализа проблемы.
Спасибо.
Нужно дополнительное время для анализа проблемы.
Спасибо.
Re: OutOfMemoryException при экспорте большого PDF
Здравствуйте.
Будет исправлено с версией 2025.1.1
Будет исправлено с версией 2025.1.1
Re: OutOfMemoryException при экспорте большого PDF
Здравствуйте,
Пожалуйста. Билд будет на следующей неделе.
Пожалуйста. Билд будет на следующей неделе.