Моя установка Discourse становится всё медленнее и медленнее в течение последних нескольких недель. В прошлом, когда это случалось, пересборка приложения помогала. Однако сейчас это, похоже, не работает.
Я искал советы на этом форуме и попробовал несколько оптимизаций базы данных (VACUUM FULL VERBOSE, REBUILD INDEX, VACUUM ANALYZE VERBOSE).
Однако ничего из этого не помогает, и при запуске контейнера проходит очень-очень долгое время, прежде чем я смогу подключиться к форуму.
Если так продолжится, форум в конечном итоге станет полностью неработоспособным. Есть какие-нибудь идеи, с чего начать поиск проблемы?
Этот вывод vmstat говорит нам о том, что в текущей ситуации оперативной памяти недостаточно.
Возможно, Discourse работает как положено, и всё в порядке, но ваши данные выросли настолько, что 4 ГБ оперативной памяти уже не хватает.
Или же что-то пошло не так, и используется много оперативной памяти, которая не должна использоваться.
Одной из мер оценки размера является создание резервной копии без вложений и проверка её размера.
Возможно, мини-профайлер подскажет, какие действия с базой данных занимают слишком много времени.
Если у вас есть бюджет, чтобы удвоить объём оперативной памяти, сделайте это. (Если вы внимательно увеличите объём оперативной памяти, но оставите хранилище без изменений, при наличии такой возможности у вашего провайдера, то это может быть обратимым и даже временным изменением.)
Если вы не можете позволить себе увеличить объем оперативной памяти, попробуйте временно установить меньшие значения для db_shared_buffers (например, 128 МБ или меньше) и ограничить UNICORN_WORKERS значением 2, так как необходимо как можно скорее прекратить использование подкачки.
Дополнительная оперативная память у моего хостинг-провайдера довольно дорогая, поэтому сначала я изучу другие варианты. (К тому же я беспокоюсь, что изменение настроек может нарушить мои льготные тарифы…)
Я изменил db_shared_buffers на 128 МБ и UNICORN_WORKERS на 2.
Достаточно ли остановить и запустить приложение через launcher app stop / start, чтобы эти настройки вступили в силу?
Нажав Alt+P на клавиатуре, вы увидите строку с данными о времени выполнения под баннером форума (у меня справа) после каждого действия на форуме. Если щёлкнуть по этой строке, откроется всплывающее окно со статистикой.
Это примерно столько же, сколько у меня при 1 ГБ оперативной памяти. У меня 2 тысячи тем, 15 тысяч сообщений и более 500 зарегистрированных пользователей.
Какова история вашего Discourse? Я смутно помню, что в прошлом для повышения производительности иногда требовалось создать индекс для какой-либо таблицы.
А как насчёт плагинов? Можно ли запустить действия в безопасном режиме, чтобы проверить, выполняются ли они быстрее?
Есть ли простое место, где можно найти такую статистику?
Большинство статистических данных показывают мне, что произошло за последний день или неделю, но не общие итоги.
Не уверен, что вы имеете в виду под историей. Но я начал его в марте 2021 года.
Первое впечатление такое, что безопасный режим не быстрее. Я поэкспериментирую с ним и мини-профайлером, чтобы проверить, подтвердится ли это впечатление.
Прикреплён вывод команды ps auxf. auxf.txt (20.1 КБ)
На странице /about есть колонка с данными за всё время.
Похоже, ваш компьютер не перезагружался уже больше года — вероятно, стоит это сделать, а заодно обновить систему в целях безопасности. Возможно, перезагрузка поможет.
Кажется, я заметил, что ваш сервер настроен на использование гипервизора, тогда как мой — на LXC. Не знаю, важно ли это. (В моей системе отображается процесс /usr/bin/lxcfs, которого нет у вас, а у вас есть процесс hv_vss_daemon, которого нет у меня.)
Также, возможно, вы могли бы предоставить вывод команд df -T и swapon.
Я согласен с вашим скептическим отношением к этому! Однако я не предлагаю это всуе — я вполне уверен, что нам встречался случай, когда долго работающая система действительно улучшалась после перезагрузки. (Редактирование: здесь, хотя это был другой случай.)