Discourse のフォーラムでは、メモリは 1GB で十分、最大でも 2GB で問題ないと読んだのですが、それらの設定では当サイトの動作が滑らかになりません。Docker Compose ファイルを 4GB のメモリで実行すると、90〜95% のパフォーマンスで動作しますが、これはかなり高い数値です。Docker Compose ファイルには、私が作成した静的な HTML サイトと nginx プロキシも含まれています。Discourse 側で何らかの工夫や設定を行うことで、より少ない RAM でもスムーズに動作させる方法をご教示いただけますでしょうか。
ワーカー数とデータベースバッファの調整が必要です。調整すべきオプションは以下の通りです。
db_shared_buffersUNICORN_WORKERS
以下は、Unicorn 1 台あたりの使用量の推定値です。
Discourse は 512MB の RAM で動作させることが可能ですが、快適な体験ではありません。問題となっているのは、Discourse がサーバー(ノード全体)のリソースを評価し、可能な限り多くのリソースを活用するようにリソース使用量を計画するためです。これは、Discourse が単独で動作することを前提としているためです。
docker-compose ファイルをここに共有していただけますか?そうすれば、適切な提案をすることができます。
docker-compose ファイルは以下の通りです。画像リンクが 2 つを超えてしまうため、いくつかを削除しましたが、これで問題ないはずです。DB バッファの環境変数はどこに設定すればよいでしょうか?
version: '2'
services:
nginx:
image: ''
#image: 'itshady/nginx'
ports:
- '80:80'
depends_on:
- discourse
intellectus:
image: '
# image: 'itshady/intellectus'
ports:
- '90:80'
postgresql:
image: ''
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
#- './data/postgresql:/bitnami/postgresql'
- 'postgresql_data:/bitnami/postgresql'
redis:
image: ''
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- 'redis_data:/bitnami'
discourse:
image: 'docker.io/bitnami/discourse:2-debian-10' #2-debian-10
ports:
- '100:3000'
depends_on:
- postgresql
- redis
volumes:
- './data/discourse:/bitnami'
environment:
- POSTGRESQL_HOST=postgresql
- POSTGRESQL_ROOT_USER=postgres
- POSTGRESQL_CLIENT_CREATE_DATABASE_NAME=bitnami_application
- POSTGRESQL_CLIENT_CREATE_DATABASE_USERNAME=bn_discourse
- POSTGRESQL_CLIENT_CREATE_DATABASE_PASSWORD=bitnami1
- DISCOURSE_POSTGRESQL_NAME=bitnami_application
- DISCOURSE_POSTGRESQL_USERNAME=bn_discourse
- DISCOURSE_POSTGRESQL_PASSWORD=bitnami1
#- DISCOURSE_HOSTNAME=forums.intellectus.ca
- DISCOURSE_HOSTNAME=${FORUM_URL}
- DISCOURSE_EMAIL=
- SMTP_HOST=
- SMTP_PORT=
- SMTP_USER=
- SMTP_PASSWORD=
sidekiq:
image: 'docker.io/bitnami/discourse:2-debian-10'
depends_on:
- discourse
volumes:
- './data/discourse:/bitnami'
command: 'nami start --foreground discourse-sidekiq'
environment:
- DISCOURSE_POSTGRESQL_NAME=bitnami_application
- DISCOURSE_POSTGRESQL_USERNAME=bn_discourse
- DISCOURSE_POSTGRESQL_PASSWORD=bitnami1
- DISCOURSE_HOST=discourse
- DISCOURSE_PORT=3000
#- DISCOURSE_HOSTNAME=forums.intellectus.ca
- DISCOURSE_HOSTNAME=${FORUM_URL}
- SMTP_HOST=
- SMTP_PORT=
- SMTP_USER=
- SMTP_PASSWORD=
volumes:
postgresql_data:
driver: local
# external: true
redis_data:
driver: local
# external: true
discourse_data:
driver: local
# external: true
生のコードを ``` のみの行で囲むと、はるかに読みやすくなります。
最初のステップとして、Discourse インスタンスをビルドして起動するには ./launcher を使用することをお勧めします。必要であれば、./launcher でビルドした後、docker-compose で起動することも可能です(少なくとも私は、Kubernetes 環境で Discourse イメージをビルドして起動するために同様の方法を使用したことがあります)。
Bitnami イメージを使用されていますが、これらは Discourse のメンテナーによって完全にサポートされておらず、Discourse 公式の標準インストール を使用するよりも多くの RAM を消費する可能性があります。
Bitnamiイメージが依然として人気があるのはなぜですか?
自己解決ですが、Bitnamiは、ビルドが決定的で環境変数中心の、唯一の慣用的なDockerオプションのようです。DiscourseはデフォルトでDockerを使用しますが、SSHでログインしてターミナルからセットアップ/保守する必要がある従来のビルドシステムのブートストラップとして、より多く扱っています。
その通りです。ここでヘルプが必要な場合は、標準のインストールに従ってください。Bitnamiからのヘルプが必要な場合は、彼らのイメージを使用できます。
これを読む必要があるかもしれません。