在我摸不着头脑试图弄清楚为什么我的站点响应如此缓慢即使服务器资源很好之后,我终于检查了 Apache 状态并发现:
78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers
Run Code Online (Sandbox Code Playgroud)
看来我的 apache 连接数已经达到极限了。任何试图访问我的网站的人都会被列入“等待名单”,直到 Apache 再次免费。
看来我有两个选择。
A) 将最大连接数限制提高到 256 以上。虽然根据这篇文章这并不容易:
默认情况下,MaxClients 参数的编译硬限制为 256。然而,这可以通过重新编译 Apache 来更改。一些发行版或托管公司将此限制提高到非常高的值,例如 512 甚至 1024,以应对大负载。
B) 找到占用太多时间的脚本。这对我来说似乎更棘手,因为大多数 apache 进程只是出现然后又消失了。此外,我的网站 PHP 脚本优化得很好……而且,服务器资源也很好:
Server load 2.69 (8 CPUs)
Memory Used 25.33% (2,039,108 of 8,048,804)
Swap Used 1.32% (54,156 of 4,095,992)
Run Code Online (Sandbox Code Playgroud)
我应该选择哪个选项(如果有任何一个),我应该怎么做?
编辑
更多信息:服务器版本:Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/1.0.0-fips DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
HTTP 会议:http : //pastebin.com/yBeLt6mP
Parital 请求示例:http …
我不断收到 RAM 和 CPU 峰值,但我不知道它来自哪里。
如果我查看流程管理器,我会看到,
/usr/bin/php /home/hellohel/public_html/index.php
Run Code Online (Sandbox Code Playgroud)
重复了几次。我也偶尔看到:
[php] <defunct>
Run Code Online (Sandbox Code Playgroud)
占用我大约 30% 的 CPU!我有一个非常强大的服务器(云 VPS),有很多 CPU 和很多 RAM。通常,我的内存和 CPU 使用率保持在 7-9% 的健康状态,但每隔一段时间就会出现一个峰值,从而减慢我的网站速度。我的网站一整天都有很多流量,我认为峰值不是来自高流量峰值,而是某种内存泄漏。
我最大的问题是:
当我查看我的每日流程日志时,我看到:
49.0% /usr/bin/php /home/hellohel/public_html/index.php
Run Code Online (Sandbox Code Playgroud)
事实上,这个目录甚至不存在。没有/usr/bin/php /目录。真正的脚本位于:
/home/hellohel/public_html/index.php
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?或者这一切正常吗...