聊天消息只有在我刷新或切换频道时才会显示出来

我的实例流量非常低,例如每天的页面浏览量少于 1000 次(不包括爬虫)。

然而,仅仅是打开论坛首页什么都不做,我就会收到至少一个 429 响应,有时是 2 或 3 个,这在我点击任何内容之前就已经发生了。

我在元(meta)上搜索了,找到的唯一一个主题流量很高,并且不应该解释这里发生的情况。

我的实例使用官方安装程序,但设置了子文件夹。我曾认为可能是我的反向代理到 NGINX 的真实用户 IP 配置有误,但据我所知,IP 地址正在被正确报告(如果这仍然是导致此问题的一个可能原因,我可以进一步深挖)。

我本来不太担心这个问题,但有时在聊天时会遇到一个问题,当我编辑聊天消息时,我无法立即看到更新的内容,我想知道这是否与 429 响应有关。

感谢任何关于如何诊断此问题的指导,任何建议都欢迎!

谢谢!

在深入其他地方排查之前,我会先排除 IP 问题。

您是否查看了活动用户账户上报告的 IP?

您是否也将 CloudFlare 用作代理?

嘿 Stephen,感谢你抽出时间回答!

我已经查看了活动用户账户上的报告 IP,它们看起来都正确——包括我的。其他人的 IP 各不相同,而且都来自我国(巴西)的不同地区,这符合预期。我曾考虑在数据库和日志中进行查看,但由于此测试表明这可能不是问题,所以我没有这样做。

我没有使用 CloudFlare 作为代理,但过去曾使用过——我已仔细检查 templates/cloudflare.template.yml 是否被注释掉了。

现在,查看我的 app.yml,我看到 templates/web.ratelimited.template.yml 也被注释掉了……我想知道是否应该包含它以避免被速率限制?:thinking: 这没有意义,对吧?:smiling_face_with_tear:

429 响应正文是“您执行此操作的次数过多。请等待 2 分钟后再试。”

1 个赞

我仍然收到这些,我现在明白是 Discourse 在处理它,而不是 Nginx,所以我尝试设置 DISCOURSE_REJECT_MESSAGE_BUS_SECONDS: 0.2(默认值为 0.1),因为我在其他关于 message bus 429 的主题中看到过,但没有任何改变。如果您能指出可能放宽此限制的环境变量,我将不胜感激。

我还在控制台中看到此错误。

我不会太担心这两个问题,真正的问题是聊天消息除非我刷新或切换频道否则不会显示:如果我从一个私人聊天切换到另一个,然后再切换回来,那时我才能看到新消息。

1 个赞

正如我们刚才聊过的,这是由Unicorn请求排队造成的,@renato将调整Unicorn的数量并报告他的发现

现在这很糟糕。应该发生的是,在退避期过后,聊天将自动恢复并获取自上次轮询工作以来所有的消息。你没看到吗?如果是这样,那是一个严重的bug。

2 个赞

谢谢!

是的,我没有遇到过这种情况,这可能还是别的原因,我不确定。我能看到表示有新消息的绿点,但消息本身没有显示出来,然后当我切换频道时,我可以看到新消息,绿色的通知点也消失了。

我现在正在用额外的 worker 进行重建,我会进一步测试,如果这种情况持续发生,我会尽量收集详细信息并反馈。

1 个赞

@Falco 报告,我仍然可以在控制台和网络选项卡中看到 429

我也能重现聊天窗口未更新的问题,即使是和我自己聊天:如果我发送一条消息,它会显示出来,但悬停控件不会,然后如果我切换到另一个聊天再切换回来,我就可以编辑我发送的消息,但必须离开/返回才能看到它更新。

2 个赞

我目前正在对许多网络/实时更新内容进行大规模重构,预计下周合并,这可能会大大改善您的问题(除非是其他完全无关的问题)。

7 个赞

我认为重构在本周被合并了。@renato,你注意到任何改进了吗?

2 个赞

我认为我们遇到了同样的问题。许多高度参与的聊天用户报告说,他们看不到其他人发送的消息,只能看到自己的消息,直到刷新页面。有什么办法可以解决这个问题吗?是在前端通过仪表板还是通过 SSH?