如何诊断性能下降?

最近我的网站在加载页面时出现轻微且突然的变慢。我之前遇到过一个问题,备份生成时超出了我的 DigitalOcean 卷空间,导致网站宕机。从那以后,我一直在努力重建网站。考虑到时间上的巧合,这些事件可能有关联。目前网站看起来处于稳定状态,只是比我习惯的要慢。

我可以详细说明发生的情况,但我更愿意问一个更普遍的问题。诊断网站变慢的原因有哪些技巧?我的 Droplet 平均 CPU 利用率为 20%,所以我似乎拥有足够的资源(4 GB 内存 / 2 个 AMD vCPU / 80 GB 磁盘,约 15,000 次页面浏览量/天)。

任何建议都将不胜感激。

3 个赞

我的第一步将是在命令行上运行
vmstat 5 5

3 个赞

感谢您的建议。我对这个命令不太熟悉,有什么特别需要注意的吗?
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st\n 1 0 475136 144304 20296 1786100 2 3 2622 447 44 50 19 3 72 1 4\n 0 0 475136 143076 20304 1785312 0 0 65 25 622 584 2 1 95 0 1\n 0 0 475136 141080 20456 1789144 0 0 800 3 459 473 2 1 96 0 1\n 3 0 475136 143092 20572 1783408 0 17 11598 51 733 966 14 6 67 2 12\n 0 0 475648 134688 20376 1791036 0 81 38915 394 1323 1784 10 8 61 8 13\n

1 个赞

谢谢!如果内存不足,缓存数字会很小;如果分页很多,si 和 so 列会很大。但情况并非如此。

我们确实看到 bi 和 bo 有一个很大的峰值,这通常是磁盘活动。我想知道是不是有什么东西在构建、修复或扫描什么东西。

也许可以尝试运行
ps auxrc
每五秒钟运行一次,持续一分钟左右,看看是否能抓住一个繁忙的进程。

还有其他可能尚未安装的实用程序:也许可以搜索“如何在 Linux 系统中监视磁盘 IO”或类似内容。

值得注意的是,如果您对系统的完整性有疑问,从备份中重建系统可能是最快的前进方式。但请确保备份有异地副本,如果不是两个的话,以防发生意外。而且,理想情况下,在新实例上进行安装,并保留现有实例,直到新实例运行正常。

5 个赞

这是个很棒的建议,谢谢!

我的内存使用率是 80%。这正常吗?内存占用下降是因为我通过启动器停止并重新启动了应用程序。

droplet:4 GB 内存 / 2 AMD vCPUs / 80 GB 磁盘

我启动了一个新的 droplet,并恢复了论坛的备份(不含图片),结果出现了类似的行为。

htop 输出,按内存排序:

对我来说,80% 听起来没什么问题。

更有趣的是,您有很多 sidekiq 进程,但却显示“5 个中的 0 个忙碌”——您拥有的不止 5 个。您似乎还有很多 unicorn 线程。

我建议在这里开一个新话题,附上您的 htop 输出,包括您的 yml 配置,说明您是否调整了 unicorn 计数。询问这一系列进程是否看起来合理。

我在同一台 VPS 上有非常相似的 htop(处理器不同),并且我没有更改任何默认设置。

在不了解任何信息的情况下,我会声称这只表明了一件事:此时流量不多,甚至没有流量。

1 个赞

是的,我应该检查我自己的 htop:非常相似。

另一个完全不同的想法,针对“减速”的原始观察——使用 Alt-P 激活 mini-profiler,然后访问论坛上的一个典型的大型页面,并通过单击右上角出现的计时数字来查看正在进行哪些查询以及它们花费了多长时间。

1 个赞

我能够执行 apt upgrade 并进行重建。这个问题:Pups error on rebuild 🐕 曾一度阻止我进行重建。

自重建以来,感觉有所改善。但我不想凭感觉行事,我更希望有分析和可衡量的数据。感谢 @Ed_S 提供的提示,它们将有助于进一步监控。

我想知道是否有可能捕获一些性能分析数据,通过管理页面显示实例的“健康状况”。也许这是一个潜在的插件创意或未来的核心功能?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.