Как настроить параметры для сайта с большим и тяжелым трафиком?

Я управляю сообществом с 38 тысячами пользователей на виртуальной машине с 24 ядрами и 64 ГБ ОЗУ. Я установил DISCOURSE_UNICORN_WORKERS равным 48.

В последнее время сайт начал отвечать медленно, когда в один день число уникальных посетителей достигло 20 тысяч, а число просмотров страниц — 500 тысяч. Пользователи получают уведомления с задержкой в несколько часов после того, как событие фактически произошло.

Нагрузка на ЦП составляет около 15%. Поэтому я полагаю, что проблема в недостаточном количестве воркеров Sidekiq, и установил DISCOURSE_UNICORN_SIDEKIQS равным 10, а DISCOURSE_DB_POOL — 13. Однако это привело к множеству ошибок 500 на многих страницах. Мне кажется, что такие значения слишком велики для PostgreSQL.

Таким образом, я задаюсь вопросом: автоматически ли Discourse масштабируется на сервере с 24 ядрами без ручных настроек? Или как правильно настроить параметры параллелизма для крупного сайта, подобного моему?

Самый простой способ, который я нашел для автоматического масштабирования ресурсов, — это просто снова запустить ./discourse-setup, который пересоздаст app.yml с новыми значениями для соответствующих параметров.

Существует несколько тем, посвященных настройке крупных сайтов. Скорее всего, вам потребуется выделить больше памяти для PostgreSQL.

Да, я попытался изменить max_connections и shared_buffers в Postgres, и, похоже, это сработало.

Я вижу изменение db_shared_buffers в app.yml, но shared_buffers Postgres внутри контейнера, похоже, не изменилось.

В любом случае, моя проблема в основном решена. Большое спасибо.