网站在 VPS 上变慢了,在共享主机上则快得多。出了什么问题?

网站在 VPS 上变慢了,在共享主机上则快得多。出了什么问题?

我的共享主机因系统过载而暂停了我的网站,因此我将网站移至具有 4GB RAM 的 VPS。但不知何故,网站变得非常慢。

这是 vmstat 输出 -

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 3050500      0      0    0    0     0     1    0    0  0  0 100  0  0

以下是我在服务器上运行的静态 html 页面的 Apache Benchmark 输出 -

Benchmarking www.ask-oracle.com (be patient)...apr_poll: The timeout specified has expired (70007)
Total of 20 requests completed

更新:

服务器配置:

  • 项目清单
  • Centos 5.6
  • 4 核 CPU
  • 4 GB 内存
  • 带有 APC 的 LAMP 堆栈
  • WordPress 的
  • 只有一个网站

现在加载时间几乎翻倍,而同一个网站在共享主机上加载速度要快得多。我知道我需要调整一些设置,但不知道从哪里开始?

我已经尝试优化 apache、mysql 等。

更新 2:

CPU 使用率低,查看正常运行时间输出:

 11:09:02 up 7 days, 21:26,  1 user,  load average: 0.09, 0.11, 0.09

更新 3:

当我加载任何网页时,浏览器会长时间显示“正在等待”,然后页面会快速加载。因此我怀疑服务器只能接受有限的连接,并将额外的连接保持在等待状态。如何检查这一点?

更新 4: 以下是执行 netperf 的输出

TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec

 87380  16384  16384    10.00    9615.40
[root@ip-118-139-177-244 j3ngn5ri6r01t3]#

这是来自 httpd.conf 的 Apache MPM 设置,它们看起来正常吗?

<IfModule worker.c>
StartServers       5
MaxClients        100
MinSpareThreads    50
MaxSpareThreads    250
ThreadsPerChild     125
MaxRequestsPerChild  10000
ServerLimit     100
</IfModule>

答案1

我的猜测是:您的共享主机没有限制您的 CPU,甚至比您当前的 VPS 还要快。也可能是很多 VPS 都存在这种情况,即超卖。您的 VPS 托管在共享机器上,您可能无法获得所有的 CPU 周期。此外,I/O 可能非常差或互联网连接速度很慢。

您不知道主机上您的 VPS 上面发生了什么,请尝试找出答案:)。

答案2

您在 httpd.conf 中的 apache MPM 设置是什么?我尝试连接到您的服务器,甚至需要 5-10 秒才能发回标头。

编写糟糕的 wordpress 插件和主题可能会影响性能,但通常它们会在日志文件中喷出错误或搅乱 mysql/磁盘访问,但这似乎不会发生在您身上。

更新: 您可以尝试运行 prefork 而不是 worker,尤其是在使用 4GB RAM 的情况下。Wordpress 建议这样做: http://codex.wordpress.org/High_Traffic_Tips_For_WordPress

答案3

运行 netstat -anp | grep TIME_WAIT | wc -l

这将返回等待 apache 响应的请求数。如果此数字异常高,请调整 apache 设置,以便它每秒可以处理更多请求,而不会影响整体服务器性能。

设置 apache preform MPM 设置如下:

<IfModule prefork.c>
StartServers       25
MaxClients        500
MaxRequestsPerChild  10000
ServerLimit     500
</IfModule>

相关内容