偶尔非常高的CPU负载

偶尔会出现 CPU 负载非常高的情况。通常运行非常流畅,但有时会出现 CPU 负载飙升的情况。在此期间,论坛会返回 502 错误或运行得非常缓慢。我有一台拥有 3 个 vCPU 和 4 GB RAM 的 Hetzner 服务器。

有人知道可能是什么原因造成的吗?

Hetzner 后端控制台显示如下:

您能否在服务器上运行 htop 或类似命令,以识别导致高 CPU 负载的进程名称?

正在运行一个周期性进程。您有交换空间吗?您的内存不足。我建议添加 2 到 4 GB 的交换空间。

1 个赞

我不得不等待以捕获高 CPU 事件。我运行了 htop 并截了一些屏幕截图(我从未使用过它,所以我不知道我在看什么)。

这是应该做的第一件事。

2 个赞

在这里进行交换并非明智之举,您离出现重大问题仅一步之遥。

1 个赞

@GeorgSeifert 您的问题解决了吗?

如果添加交换是解决方案,请将 @pfaffman帖子标记为解决方案。它位于帖子菜单中,看起来像一个带有复选标记的正方形。

我尝试了另一台拥有更多内存但CPU较慢且更便宜的服务器。我将对此进行几天的监控。

你添加了交换功能吗?这很重要。

我认为目前双倍的物理内存应该够用了。

Discourse 页面说,拥有 1-2 MB 内存的服务器足以运行它。所以我想我有 4 MB 应该还算安全?现在是 8 MB。

我不确定我们的论坛流量是否很大(我刚查看了报告,上面显示有 15 名登录用户和 1000 名未登录用户)。

它足够了——没有插件和很少的其他东西,比如用户和一个活跃的管理员/版主。这是最基本的,甚至论坛本身也可以工作,重建会失败。

我们这里有几个关于这个问题的帖子,一个比较一致的看法是,2 MB 对于小型论坛来说足够了,如果也有交换空间的话

1 个赞

@pfaffman 提醒我一下……./discourse-setup 命令不是会自动创建 swap 文件吗?

@GeorgSeifert 你是按照官方安装说明来设置你的站点的吗?如果不是,我们很难在这里为你提供支持。正如大家告诉你的,你需要有一个 swap 文件,无论你有多少内存,否则你将遇到困难。

即使内存应该绰绰有余,你通常仍然需要交换空间。我认为这是因为进程看到有更多内存可用,它们就占用了它,而当需要更多内存时,它们无法足够快地被换出。

它会,但前提是你的内存只有 2GB 或更少。

他很可能遵循了标准的安装流程。不清楚他为什么会耗尽内存,但事实就是如此。有可能增加实际内存可以解决这个问题。

我刚按照安装页面上的说明操作。

那么我该如何检查我是否启用了交换空间呢?

运行命令 free -h

您的 htop 图像显示没有交换空间。

1 个赞

我确实没有交换空间。

我的安装是不是有什么问题,导致占用了太多内存?

增加内存似乎暂时解决了这个问题。

如果你有交换空间(swap),就像应该有的那样,你就不需要那么多内存(RAM)。

请注意,安装和更新比正常运行时需要更多的内存。内存 = 交换空间 + 内存(RAM)。

1 个赞