AstonJ
(AstonJ)
1
是否有任何指南(或本论坛中的主题)提供关于优化托管 Discourse 站点服务器的性能提示?
我运行了 ./Discourse-set,它将内存设置为总量的四分之一(即 4096MB),并添加了 8 个 Unicorn 工作进程。但除此之外,我们还能做些什么,或者是否可以进一步调整这些设置?
该服务器配备 64GB ECC 内存和两块 512GB NVMe SSD(组成 RAID 阵列)。查看 top 命令显示,仅使用了约 5GB 内存,57392484 avail Mem。该服务器还运行其他非 Docker 站点,但它们并未占用太多资源,且 MySQL 已针对一个 2GB 的大型数据库进行了优化。负载平均值通常低于 1.0(一般在 0.50 到 1.0 之间,偶尔会超过)。目前尚未报告任何问题,但我希望尽可能充分利用服务器资源。
我在考虑是否应首先将 db_shared_buffers 加倍,以及目前被注释掉的 #db_work_mem: "40MB" 该如何处理。
欢迎提供任何信息或建议 
3 个赞
pfaffman
(Jay Pfaffman)
3
关于调优,有(或曾经有过)几个主题。我认为,大多数成功的(除了这个)都提供了关于可用资源、db_shared_buffers 和其他设置的精确细节,以及存在的问题,也许还附有来自 htop 或其他工具的输出。您的数据库有多大?您遇到了什么问题?(您可能想开一个新主题)
1 个赞
谢谢!目前还没有出现问题。只是注意到内存使用率很高,但论坛并不算非常活跃。我只是习惯于积极主动地思考并检查哪些资源使用最多。这只是在一台拥有 6 核 @ 3.5 GHz 的 3GB VPS 上。速度不慢,相当快,只是觉得内存使用可能会成为未来的问题,并想知道可以调整哪些设置。
我会进一步阅读关于 Ruby on Rails 应用程序和优化的相关内容。再次感谢。
1 个赞
pfaffman
(Jay Pfaffman)
5
这取决于您所说的“使用率”是指哪个指标,这可能是正常的。但内存为 3GB,可能没有太多可调整的,如果您运行了 ./discourse-setup,它的猜测可能已经足够好了。
1 个赞
free -h
total used free shared buff/cache available
Mem: 2.9Gi 1.8Gi 167Mi 100Mi 1.0Gi 895Mi
Swap: 1.0Gi 587Mi 436Mi
可用内存约为 900M。目前不是问题。但问题不是我来这里的目的。我想知道如果/当可用内存成为未来问题时该怎么做。除了增加更多内存之外。
pfaffman
(Jay Pfaffman)
7
在此级别,唯一真正能做的就是增加更多内存。如果您有 8GB 或 16GB,那么有一些事情可以做。如果有什么的话,您可能想再增加 1GB 的交换空间,但您可能没问题。
如果您运行 ./discourse-setup,它将创建一个 2GB 的交换文件。您在重建时可能会遇到问题。
好的,我通过将安装默认值从:
UNICORN_WORKERS: 8
更改为
UNICORN_WORKERS: 4
将可用内存使用量几乎翻了一番。
然后:sudo ./launcher rebuild app
我现在正在设置 PostgreSQL 的监控,看看那里有什么情况。
RGJ
(Richard - Communiteq)
9
总会有某个资源成为瓶颈的时候。但我觉得你目前的服务器配置过高了。
当你有更多的 Unicorn 进程时,你会使用更多的内存。
当你的网站流量增加时,你需要更多的 Unicorn 进程。
我看到所有的 Unicorn 进程 CPU 使用率都是 0.0%,只有 worker[0] 似乎在实际工作。
你通过运行更少的 Unicorn 来减少内存使用。这很好,因为你似乎并没有使用它们。但可用内存实际上是一件坏事。你在优化错误的变量。
未使用的内存对你没有任何好处。这意味着你在为实际上没有使用的东西付费。如果你一直有 2 GB 的可用内存*,你可以缩小服务器规模并节省一些钱。
) 重建 Discourse 会消耗更多内存,所以你需要检查重建期间有多少内存可用。实际上,不要低于 2 GB 总内存,并且/或者确保你有足够的交换空间,正如 Pfaffman 已经说过的。
1 个赞
不正确。“空闲”的内存什么都不做是坏事。但“可用”内存是系统正在使用的、可以轻松释放的内存,这是一件好事。
或者官方解释:
可用内存: 估算在不进行交换的情况下,可用于启动新应用程序的内存量。
来源:man free
根据下图,空闲内存几乎没有变化。因此,系统几乎所有的内存都在使用中。但是,系统现在会减少交换,因为有更多的可用内存可以在需要时释放。
……是的,我宁愿在流量需要任何更改之前释放未使用的内存。
再次感谢。
Jagster
(Jakke Flemming)
11
我认为糟糕的在这里意味着它有成本,但什么也得不到。这是一种相当普遍的思考方式,因为当一个人需要更多资源时,成本也会更高——而 RAM 是其中昂贵的部分。
而且如果你没有太多钱可以浪费,那就有点愚蠢地支付过多的费用(芬兰广告语,无冒犯
)
1 个赞
是的,正是如此,关于可用内存。然而,“可用内存实际上是一件坏事”……这正是我要解决的问题。 