Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
发帖从 1 秒变成 10 秒,NodeBB 日志没有异常。Postgres CPU 只有 20%,是不是数据库可以排除?
不能。数据库慢不一定 CPU 高。锁等待、连接等待、磁盘 fsync、缺索引都会低 CPU 但高延迟。
pg_stat_activity 里有很多 active,query 都是 topics 和 posts。
pg_stat_activity
看等待事件。是 IO、lock、client read,还是 transaction id?
还有 autovacuum。帖子表更新频繁,死元组多了,查询计划会慢慢变差。
autovacuum 没动静,表膨胀我没看过。
查 n_dead_tup 和表大小变化。慢性变慢常常不是瞬间故障,是维护任务没跟上增长。
n_dead_tup
我们上次是搜索插件自己建的字段没索引,管理后台某个列表一打开就扫表。
不要先重启数据库。先抓慢查询,开一个短窗口就够,别把敏感参数全打进日志。
抓到了一个 8 秒查询,来自首页热门主题排序。
那就看插件和排序字段。NodeBB 主逻辑没错,插件可能改变了查询形态。
禁掉热门插件后发帖 900ms。Postgres 也回落了。
复盘重点写“数据库没报错不等于数据库没问题”,要有慢查询基线。
你好!看起来您对这段对话很感兴趣,但您还没有一个账号。
厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。
有了你的建议,这篇帖子会更精彩哦 💗