Alec
(Alec)
1
今天我的论坛迎来了首次流量高峰,用户也遇到了第一个大问题。他们每隔 5 到 10 分钟就会收到“已登出”的提示,并被返回到首页,但在大多数情况下,他们实际上仍然保持登录状态。
我的论坛部署在 DigitalOcean 的基础款 Droplet 上,配置为共享 CPU、1GB 内存,上线大约一周。
流量高峰出现在比赛期间,当时在一个主题帖中,90 分钟内发布了 400 条回复(大家实时跟进比赛)。据估计,这段时间内有 40 到 60 位发帖者在线,而匿名访客数量应该不多(我们总共只有 250 位注册用户)。
这是我第一次运营论坛,这种情况是否说明低端 Droplet 已达到性能极限?
CPU 使用率似乎最高达到了 60%,比赛期间论坛依然运行迅速且响应流畅。
DigitalOcean 没有提供内存使用图表,但我在比赛结束后不久进入控制台查看,发现内存使用率已达 87%(其中 2GB 交换空间的使用率约为 37%)。
您建议采取什么措施?
- 为下一场比赛升级到 2GB Droplet,看看效果如何?
- 重新构建系统,或许移除一些插件?
- 调整触发该事件的阈值?
为我的天真道歉,我仍在学习之中。
是的,我建议你先试试这个。
关于用户“被随机登出”……我从未听说过这种情况……你是指主题顶部的这条通知吗?
由于负载极高,此页面暂时会像未登录用户看到的那样向所有人显示
在这些高负载场景下,搜索功能也将自动禁用。
Alec
(Alec)
3
感谢快速回复。我确实会这样做。
是的,我相信大家看到的正是那个“极端负载”提示,随后被自动重定向到论坛首页。
绝大多数人看到了该提示并被直接重定向,仅此而已。
少数人表示这种情况通常也会发生在他们身上。但除此之外,在其中一两次情况下,他们同时也被登出了。
我认为并没有重定向,也没有自动登出,所以我不确定他们在说什么。你只是由于服务器负载过高而以匿名用户身份查看该主题。
我想知道你的安装是否有问题。你是按照我们的官方安装指南进行安装的吗?是否安装了任何奇怪的第三方插件?
Alec
(Alec)
5
是的,我遵循了那些说明。
很有可能在安装过程中我犯了一些错误。
因为这是我第一次操作,所以尝试了好几次,而且我还通过实验插件进行了一些重建。
Alec
(Alec)
6
我安装的插件包括:
Docker 管理器
法律工具
在线用户
格式工具栏
所以我认为这些都是比较标准的插件。
Alec
(Alec)
9
只是对线程的一个更新。
将内存从 1 GB 升级到 2 GB 在最近的流量高峰期间似乎没有产生太大影响。不过,我从未修改或重建过 app.yml,所以不确定这是否会有所不同?
不过,将 CPU 从 1 个虚拟核心升级到 2 个虚拟核心似乎解决了问题。
我们最近因新球员签约而非常忙碌,至今无人报告退出问题。明天将有一场重要比赛,是一次大考验,但目前看来情况良好。
Stephen
(Stephen)
10
你需要更新 app.yml 并重新构建,才能真正受益于这些升级。
db_shared_buffers 应设置为系统内存的 25%,即 512MB。你当前的设置可能为 256MB。
unicorn_workers 应设置为每核心两个,因此请将其从 2 改为 4。
Alec
(Alec)
13
好多了,谢谢
。
与上次不同,上次在游戏期间(周末)每 4 到 5 分钟就会出现一次,令人不胜其烦,而这次似乎并没有造成太大问题。
看来只有一小部分用户在游戏中收到过一次“负载过高”的提示,但没有人被踢出讨论区。
迁移到 Discourse 取得了巨大的成功,许多多年未见的发帖人重新活跃起来(用户数量至少增加了 50%)。因此,我计划在两周后从 Digital Ocean 迁移到 Hetzner,这样既能保持成本可控,又能拥有更强大的服务器来应对流量高峰(尽管我也在考虑是否只需在那每周两小时的高峰时段临时升级服务器配置)