尽管内存和 CPU 使用率较低,VPS 仍然运行缓慢

尽管内存和 CPU 使用率较低,VPS 仍然运行缓慢

最近,托管在 VPS 上的网站有时很难访问,我正在尝试找出原因。我注意到以下事情:

  • CPU 和内存使用率非常低(如果我们把所有东西加起来的话总是<15%,但通常甚至更低);
  • 网站加载速度极慢,但每当我通过 SSH 连接到 VPS 时,它都运行非常顺畅;
  • 我检查了 phpMyAdmin 中的活动,每当出现这些减速情况时,统计页面就需要很长时间才能刷新(设置为 5 秒时最多需要 20-30 秒 - 但每秒的查询数似乎没有增加);
  • 它似乎并不依赖于在线人数。

考虑到这些观察结果,我应该尝试检查/调试什么才能找到解决方案?

谢谢你!

答案1

这可能是由许多不同的问题引起的。无论出于何种原因,您的进程似乎正在等待需要一些时间才能完成的事情。这是否是 IO 值得怀疑,因为您会看到更高的平均负载。问题是什么。如果 VPS 是 Linux,请尝试以下几件事:

  • sysstat 包中的 iostat 将诊断是否是 IO 问题

  • 在执行缓慢请求时运行进程的 strace -fp。完成后按 Ctrl-c strace。观察缓慢请求期间的系统调用。它可能会在一个请求上停止然后继续。strace 会转储大量信息,因此您可能需要使用 -o。如果其他连接是并发的并且由另一个线程中的同一进程处理,它还可能转储来自其他连接的大量信息。

  • 增加应用程序/数据库中的日志记录并尝试缩小问题范围

我猜想您在代码或日志中对连接源执行了反向查找。如果同步执行此操作,则每个连接都将等待 DNS 服务器的响应,从而缩短您的响应时间。

另一种可能性是,您正在使用 mysql 和 myisam 作为其存储类型,并且有大量并发写入。Myisam 执行表级锁定(或至少以前如此)。整个表将被锁定以进行写入,直到查询/写入完成为止。每个连接都必须依次等待才能写入数据库。

相关内容