Память сервера сокращается после каждого запроса

Обсуждение Stimulsoft Reports.Java
Erkin
Сообщения: 14
Зарегистрирован: 09 ноя 2016, 08:37

Память сервера сокращается после каждого запроса

Сообщение Erkin » 09 ноя 2016, 11:38

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

У нас пользователи постоянно создают отчеты через портал. Отчеты формируются в течении 30 сек и при каждом формировании на сервере память уменьшается на 100-300 Мб.

На форуме нашел следующие параметры:

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

StiOptions.Engine.DocumentLoadingOptimization = true;
StiOptions.Engine.DocumentSavingOptimization = true;
где они прописываются, когда на сервере лежат только jar-файлы и все настройки сводятся к настройке сервлета?
Vadim
Сообщения: 94
Зарегистрирован: 04 апр 2013, 08:26

Re: Память сервера сокращается после каждого запроса

Сообщение Vadim » 09 ноя 2016, 12:11

Здравствуйте.
Вы используете WebViewer (HTML) ?
Обновитесь до последнего пре-релиз билда, там исправлена memoryleak проблема.
Erkin
Сообщения: 14
Зарегистрирован: 09 ноя 2016, 08:37

Re: Память сервера сокращается после каждого запроса

Сообщение Erkin » 09 ноя 2016, 13:06

Vadim писал(а):Здравствуйте.
Вы используете WebViewer (HTML) ?
Обновитесь до последнего пре-релиз билда, там исправлена memoryleak проблема.
Да, Java + HTML. Не подскажите откуда можно скачать новые jar-ники? Спасибо!
Erkin
Сообщения: 14
Зарегистрирован: 09 ноя 2016, 08:37

Re: Память сервера сокращается после каждого запроса

Сообщение Erkin » 09 ноя 2016, 13:12

Проблема в том, что в памяти, пока JEE-сессия жива хранится результат всего запроса, а это тысячи строк табличных данных. Поэтому стало интересны опции, позволяющие постраничную загрузку. По поведению не было похоже на MemoryLeak. И соответственно возникает вопрос: как принудительно закрыть сессию сервлета отчетов, чтобы высвободить память?
Erkin
Сообщения: 14
Зарегистрирован: 09 ноя 2016, 08:37

Re: Память сервера сокращается после каждого запроса

Сообщение Erkin » 10 ноя 2016, 05:42

скачал trial-версии jar-файлов 2016.2.6 (до этого в системе использовались 2015.2), вроде работает, но как долго trial может быть активным?
Ivan
Сообщения: 609
Зарегистрирован: 10 авг 2006, 01:40

Re: Память сервера сокращается после каждого запроса

Сообщение Ivan » 10 ноя 2016, 06:11

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

Trial версии наших продуктов не ограничены по времени работы, отличие от лицензионных - только в надписи Demo.

Спасибо.
Erkin
Сообщения: 14
Зарегистрирован: 09 ноя 2016, 08:37

Re: Память сервера сокращается после каждого запроса

Сообщение Erkin » 16 ноя 2016, 09:04

скачал последнюю версию 2016.2.6, но на сервере память после каждого отчета уменьшается - можете исправить эту проблему? если использовать физическую память вне JVM, тогда мне кажется проблема исчезнет...
Vadim
Сообщения: 94
Зарегистрирован: 04 апр 2013, 08:26

Re: Память сервера сокращается после каждого запроса

Сообщение Vadim » 17 ноя 2016, 07:56

Здравствуйте.
Для WebViewer отчет и данные хранятся в сессии.
Если вы хотете просто отображать отчет вы можете в сервлете генерировать отчет и экспортировать в HTML
Erkin
Сообщения: 14
Зарегистрирован: 09 ноя 2016, 08:37

Re: Память сервера сокращается после каждого запроса

Сообщение Erkin » 17 ноя 2016, 08:43

Спасибо за воодушевляющий ответ! А как в сервлете генерировать отчет? Неужели все решают эту проблему увеличением памяти?
Vadim
Сообщения: 94
Зарегистрирован: 04 апр 2013, 08:26

Re: Память сервера сокращается после каждого запроса

Сообщение Vadim » 17 ноя 2016, 11:11

Здравствуйте.
Большой отчет соответсвенно занимат много места в памяти.
Пример генерации отчета

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

public class StiHtmlServlet extends HttpServlet{
    
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        StiReport report = StiSerializeManager.deserializeReport(new File(pathname));
        report.render();
        resp.setContentType("text/html");
        StiHtmlExportSettings settings = new StiHtmlExportSettings();
        settings.setPageRange(new StiPagesRange(StiRangeType.Pages, "1-10", 1));
        StiExportManager.exportHtml(report, settings, resp.getOutputStream());
    }
    
}
Ответить