В логах ошибок я периодически получаю следующие сообщения. Из-за этого сайт становится недоступным на 15–30 секунд, пока не восстановится.
Сообщение об ошибке (Info):
PG::ConnectionBad (FATAL: система базы данных находится в режиме восстановления) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize’
Одна очень странная вещь, которую я заметил, изучая эти логи: похоже, система ищет папку по пути /var/www/…, но такой папки на сервере не существует. Должна ли она там быть? Любая помощь будет оценена.
Если база данных повреждена, то сайт неизбежно неработоспособен. Вам нужно выяснить причину. Наиболее частые причины — нехватка оперативной памяти (RAM) и места на диске. Я предполагаю, что проблема в RAM. Сколько у вас оперативной памяти? Что выводит команда free -h?
Это путь внутри контейнера. Если вы выполните ./launcher enter app, то увидите её там.
Что ж, у вас доступно 646 МБ, и 4 ГБ — это достаточно, чтобы не рекомендовать использование файла подкачки. Каков размер вашей базы данных? Какой у вас трафик? Запущено ли на сервере что-то ещё, кроме Discourse?
./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));
В результате был получен вывод: 4650 МБ (1 строка).
Что касается трафика:
Вчера было 1200 просмотров страниц, за последнюю неделю — 12 400. Примерно 160 пользователей за последнюю неделю и около 80 одновременных пользователей в любой момент времени.
Вы просто супер. Сводный файл на 1 ГБ, похоже, полностью решил проблему с вылетами. Честно говоря, я рад, что проблема была в оперативной памяти, а не в базе данных. В эти выходные я увеличу объем оперативной памяти на сервере. Огромное спасибо всем, кто помогал в этой теме!
Честно говоря, не уверен. До этого мы делали полную переустановку и перезагрузку сервера после изменения оборудования некоторое время назад. Я предполагаю, что после перезагрузки любые изменения в системе должны были быть замечены Discourse.
После установки файла подкачки в некоторые моменты использовалось более 4 ГБ «памяти», поэтому, похоже, это точно было проблемой в периоды наибольшей нагрузки, что совпадает с временными промежутками, когда сервер падал. Сегодня мы обновились, и сайт теперь работает очень хорошо.
Но это не так. Существуют настройки, которые контролируют, например, сколько оперативной памяти может использовать база данных, и они встроены в app.yml. Вы можете отредактировать их вручную или снова запустить discourse-setup.