Вес: 1,5 ГБ используется для работы форума (даже при подключении одного пользователя). Это нормально?

Как следует из названия, я использую Wt для создания форума. Предполагается, что это часть большого проекта (и тем временем это дает мне возможность лучше изучить Wt, прежде чем переходить к самой сложной части проекта).

Проблема в том, что когда я запускаю сервер, ему требуется около 1,5 ГБ.

В данный момент я не использую изображения, медиа или другие варианты. Только "обычные" (имеется в виду html+текст+javascript) виджеты, комбинируя их для создания более сложных виджетов, DBO и множество шаблонов.

Такое использование памяти кажется нормальным для WT-приложения? Если нет, есть ли способ профилировать использование памяти функциями, структурами данных и кодом (с процентами и т. д., как мы можем сделать с профилировщиком времени)?

Видимо, по словам Валгринда, у меня нет утечек.

==13061== Memcheck, детектор ошибок памяти
==13061== Copyright (C) 2002–2015, GNU GPL, Джулиан Сьюард и др.
==13061== Использование Valgrind- 3.11.0 и LibVEX; повторно запустите с -h для получения информации об авторских правах
==13061== Команда: ./GameServer --docroot=. --http-address 0.0.0.0 --http-port 8080
==13061== Родительский PID: 13060
==13061==
==13061==
==13061== ОБЩИЕ СВЕДЕНИЯ О КУЧЕ:
==13061== используется на выходе: 111 172 байта в 243 блоках
==13061== общее использование кучи: 271 492 выделения памяти, 271 249 освобождений, выделено 1 545 796 300 байт
==13061==
==13061== ОБЗОР УТЕЧКИ:
==13061== определенно потеряно: 0 байт в 0 блоках
==13061== косвенно потеряно: 0 байт в 0 блоках
==13061= = возможно потеряно: 0 байт в 0 блоках
==13061== все еще доступно: 109 820 байт в 225 блоках
==13061== из которых доступно с помощью эвристики:
==13061== новый массив : 1536 байтов в 16 блоках
==13061== подавлено: 1352 байта в 18 блоках
==13061== Доступные блоки (те, на которые был найден указатель) не показаны.
==13061== Чтобы увидеть их, повторно запустите: --leak-check=full --show-leak-kinds=all
==13061==
==13061== ts обнаруженных и подавленных ошибок, повторите с: -v
==13061== СВОДКА ОШИБОК: 0 ошибок из 0 контекстов (подавлено: 18 из 18)

Редактировать: чтобы ответить на вопрос Хейта: это действительно начинается с такого большого использования. Хотя я действительно полностью и широко использую контейнеры для мгновенного сохранения данных (например, из запросов к БД, но ничего, что могло бы оправдать такой большой объем памяти, поскольку весь файл БД на данный момент составляет всего 80 КБ), использование памяти не не увеличивается со временем, и увеличение со вторым пользователем незначительно (системный монитор подтверждает 1,4 ГБ в начале, после того, как я несколько раз обновил веб-страницу от пользователя_1 и после того, как я вошел в систему с пользователем_2).

Edit2: используя valgrind с инструментом массива, я обнаружил проблему: это была другая часть приложения, совершенно не связанная с WT.


person DrHell    schedule 02.11.2016    source источник
comment
в то время как valgrind обнаруживает утечки, также возможно, что у вас есть некоторые списки или контейнеры, которые вы никогда не очищаете. Это начинается с такого большого использования или накапливается со временем?   -  person Hayt    schedule 02.11.2016
comment
@Hayt: да, это действительно начинается так, и нет увеличения использования памяти при обычной активности или при входе в систему второго пользователя. Я отредактировал исходный вопрос, чтобы добавить это.   -  person DrHell    schedule 02.11.2016
comment
Вы можете проверить, откуда берется память. Я не знаю WT, но, возможно, это поможет вам лучше диагностировать, откуда берется память: stackoverflow.com/questions/30512000/   -  person Hayt    schedule 02.11.2016
comment
@Hayt: спасибо, это сработало как шарм, и я нашел причину ненормального использования памяти. А причина, просто для протокола, в том, что я, конечно же, идиот: действительно, использование памяти происходит не от веб-сервера самого по себе, а от другой части проекта, которую предполагалось включить позже, и это по какой-то причине (вероятно, для проверки) я включил раньше ... потом забыл об этом до вчерашнего дня, когда я заметил подкачку диска и пошел проверить использование памяти. Я собираюсь отредактировать вопрос и отметить его как решенный. Спасибо еще раз.   -  person DrHell    schedule 02.11.2016


Ответы (1)


Хорошо, проблема не была связана с WT. Как предложил Hayt в комментариях, я использовал valgrind с опцией массива, создав небольшой файл .sh (я использую Ubuntu) с этой строкой:

valgrind --tool=massif --trace-children=yes --num-callers=500 --log-file=massif.txt ./WebServer --docroot=. --http-адрес 0.0.0.0 --http-порт 8080

Где «WebServer» — это имя приложения, а параметры, следующие за ним, специфичны для wt-серверов, и проблема была вызвана другой частью проекта, которую я забыл включить до того момента, как заметил подкачку памяти.

Решено.

person DrHell    schedule 02.11.2016