大規模でトラフィックの多いサイトのパラメータを調整する方法

38,000ユーザーを抱えるコミュニティを24コア、64GBのVMで運用しています。DISCOURSE_UNICORN_WORKERS を48に設定しました。

最近、ある日UVが20,000、PVが500,000に達した後、サイトの応答が遅くなるようです。ユーザーは通知が実際に発生してから数時間後に通知を受け取ります。

CPU負荷は約15%です。そのため、Sidekiqワーカーが少なすぎることが原因だと考え、DISCOURSE_UNICORN_SIDEKIQS を10に、DISCOURSE_DB_POOL を13に設定しました。しかし、これにより多くのページで500エラーが発生しました。そして、PostgreSQLにとって大きすぎると考えられます。

そこで、Discourseは手動設定なしで24コアサーバーに自動スケーリングするのか疑問に思っていますか?それとも、私のような大規模サイトに適した同時実行パラメータをどのように設定すればよいでしょうか?

「いいね!」 1

リソースを自動スケーリングする最も簡単な方法は、./discourse-setup を再実行して、関連パラメータの新しい値で app.yml を再作成することです。

「いいね!」 1

大規模サイトのチューニングに関するトピックがいくつかあります。Postgres により多くのメモリを割り当てる必要があるでしょう。

「いいね!」 2

はい、max_connectionsshared_buffers を Postgres で変更してみて、機能しているようです。

app.ymldb_shared_buffers の変更を確認できましたが、コンテナ内の Postgres の shared_buffers は変更されていないようです。

いずれにせよ、問題はほぼ解決しました。本当にありがとうございました。

「いいね!」 1