![Apache 随机变慢](https://linux22.com/image/540570/Apache%20%E9%9A%8F%E6%9C%BA%E5%8F%98%E6%85%A2.png)
我从 singlehop 获得了一台新的专用服务器,带有 1Gps 连接。大约一个星期以来,这台服务器表现得非常出色。一切都运行得非常快。现在它慢得要命……我每月 30 美元的 godaddy vps 速度更快。我尝试了各种各样的方法(升级 apache/php/重新安装操作系统/等等……)但都无济于事。Traceroute 和 ping 也没有发现任何问题。我还尝试调整 apache 设置,例如 keepalive/maxclients/maxservers/等等……但完全没有变化。说实话,我感觉就像在使用 pos hostv vps。每月 250 美元的大型专用服务器不应该这样,我至少可以说很生气(抱歉发泄)。
在决定迁移我的网站之前,我编写了测试脚本来加载我的服务器。我不想将它迁移到另一家糟糕的托管公司。我的测试脚本最多应该在 8-11 分钟内完成。每个脚本包含 2500 个 xml http 请求,我同时运行其中的 4 个。现在它们需要 20 多分钟才能完成(时间长了 2-5 倍...),没有明显的原因(我能看出)。没有占用系统资源。我的脚本都没有使用超过 0.5% 的 CPU/0.7% 的内存。没有磁盘浪费或任何其他情况。脚本不会失败,只是运行缓慢。有时它们会随机变快...但现在大多只是运行缓慢。
我不知道这是否意味着什么,但几分钟前我进行了一次可怜的傻瓜速度测试。我打开 FileZilla FTP 客户端并放入 1008 个 25kb 的 xml 文件。完成传输大约需要 1 分 45 秒。我注意到我的服务器正在使用 pure-ftp 进行此过程。这是从我的家用电脑到服务器完成的。我不知道 pure-ftp 是否使用 apache,但我倾向于不使用。
任何帮助或建议都将不胜感激!!我知道服务器调整可能很困难,但考虑到我只需将相同的测试脚本拖放到 godaddy vps 上,它们就能正常运行,这对我来说毫无意义。
感谢所有建议!!
答案1
我会尝试使用ab
(ApacheBench) 在两台服务器上运行。确保在相关服务器上运行每个测试,即不要从同一台服务器运行两个测试。对于基本测试参数,您可以使用以下参数:
ab -kc 10 -t 30 http://yoursite.com/page
它使用 10 个并发连接,保持活动状态并在 30 秒内执行尽可能多的请求。之后将输出一些统计数据,其中重要的数字是“每秒请求数”。
运行测试:
- 静态页面:图像或原始 HTML 文件。您应该在两台服务器上获得非常高的请求率。
- 动态页面:PHP 或您正在使用的任何类型的动态内容。使用各种页面(一些简单一些复杂)来获取一系列请求率。
下一步做什么取决于上述结果。希望它能告诉你哪些类型的页面在哪个服务器上运行缓慢,这将为你进一步调查(或另一个 ServerFault 问题)提供起点。
我还想看看其他的事情:
- 比较两台服务器的 CPU/RAM,以确保您的专用服务器确实更强大。如果不确定,请考虑在两台服务器上执行一些基本的 CPU/磁盘基准测试。在专用服务器上您可以这样做,
cat /proc/cpuinfo
但我不知道在 VPS 上会如何工作。 - 比较两个站点上的 Apache 配置是否存在差异。如果可能,尝试在新服务器上使用相同的配置文件(首先备份现有的配置文件)。
- 如果使用 PHP,请查看 php.ini 配置(或其他动态语言的类似配置)。
- 在新服务器上的错误日志中查找任何相关消息(Apache 错误日志和 /var/log/messages,特别是 /var/log/secure)。
- 在运行测试脚本时,请仔细检查是否没有使用交换内存。
- 尝试减少测试脚本的大小/范围,直到找到重复速度慢问题的最小/最短的测试。
- 当所有其他方法都失败时,请再三检查您的所有假设(例如:脚本不会使用太多的 RAM/CPU)。
答案2
只是猜测:
“脚本并没有失败,只是运行缓慢。有时它们会随机加快速度……但现在大多只是运行缓慢。”
您的测试脚本向您的服务器发送了 2500 个 xml 请求,乘以 4(如您所述)(10k 个请求)。您的 FTP 测试证明带宽不是问题(您通过单个连接发送了 2500 个 XML 文件,传输瞬间完成)。
会不会是您的网站需要的并发连接数超出了您当前提供商的预期/预测?现在,也许您的网站与另一个在与您位于同一机架的服务器上提供服务的热门网站同步?