在 Discourse 论坛上,我读到 1GB 内存和最大 2GB 内存应该足够,但这两个选项都无法让我的网站流畅运行。当我在 4GB 内存上运行 docker-compose 文件时,其运行效率约为 90-95%,这已经很高了。docker-compose 文件中的其他内容包括我构建的一个静态 HTML 网站和一个 nginx 代理。请问您是否知道 Discourse 有什么技巧或设置,可以使其在更低内存下运行得更流畅?
您需要调整 worker 数量和数据库缓冲区。因此,您需要调整的配置选项如下:
db_shared_buffersUNICORN_WORKERS
以下是每个 Unicorn 进程的资源使用估算:
Discourse 可以在 512MB 内存下运行,虽然体验不佳,但确实可行。您的问题是,Discourse 会检测服务器(即整个节点)的资源情况,并据此规划资源使用,以尽可能充分利用所有可用资源,因为它假设自己将独立运行。
1 个赞
您能在这里分享 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
如果您用仅包含 ``` 的行将原始代码包裹起来,代码将更易阅读。
作为第一步,我建议您使用 ./launcher 来构建并启动您的 Discourse 实例。如果您愿意,也可以使用 ./launcher 进行构建,然后通过 docker-compose 启动(至少我曾做过类似操作,使用 Kubernetes 构建并启动 Discourse 镜像)。
1 个赞
您正在使用 Bitnami 镜像,这些镜像完全不受 Discourse 维护者支持,并且相比使用 Discourse 官方标准安装,可能会占用更多内存。
3 个赞
为什么 Bitnami 镜像仍然如此受欢迎?
自问自答,似乎 Bitnami 是唯一符合习惯的 Docker 选项,其构建是确定性的,并且以环境变量为中心。Discourse 默认使用 Docker,但更像是传统构建系统的引导程序,需要您通过 SSH 登录并从终端进行设置/维护。
1 个赞
没错。如果你想在这里获得帮助,请遵循标准安装。如果你想从 Bitnami 获得帮助,可以使用他们的镜像。
2 个赞
我猜你可能想读一下这个:
3 个赞