我的共享主机因系统过载而暂停了我的网站,因此我将网站移至具有 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>