我有一个相当低预算的 VPS(1GB RAM + 2 个 CPU),用于运行几个(5-10 个)不同的小型网站(静态和动态)。这些网站的流量(非常)低(所有网站的平均独立访问量为 500)。
我遇到的问题是 apache2 对于 HTML 文件(和动态页面)的处理速度非常慢,但对于其他静态内容的处理速度却不慢:静态 html 文件的处理速度仅为每秒 16 个请求,动态页面(wordpress)的处理速度约为其一半,而其他静态内容(如图像和 .txt)的处理速度为每秒 400 个请求。
我正在运行带有 mod_php 的 apache2,并且想了解为什么 html 文件的加载时间比完全相同文件的 .txt 副本长 25 倍?
使用 apachebench 进行测试(在同一台服务器上运行):
$ ab -n 1000 -c 30 http://mysite/index.html
...
Concurrency Level: 30
Time taken for tests: 58.987 seconds
Complete requests: 1000
Failed requests: 962
(Connect: 0, Receive: 0, Length: 962, Exceptions: 0)
Write errors: 0
Total transferred: 6619655 bytes
HTML transferred: 6337655 bytes
Requests per second: 16.95 [#/sec] (mean)
Time per request: 1769.599 [ms] (mean)
Time per request: 58.987 [ms] (mean, across all concurrent requests)
Transfer rate: 109.59 [Kbytes/sec] received
...
相对
$ ab -n 1000 -c 30 http://mysite/index.txt
...
Concurrency Level: 30
Time taken for tests: 2.314 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 6564000 bytes
HTML transferred: 6284000 bytes
Requests per second: 432.19 [#/sec] (mean)
Time per request: 69.414 [ms] (mean)
Time per request: 2.314 [ms] (mean, across all concurrent requests)
Transfer rate: 2770.40 [Kbytes/sec] received
...
我注意到 .html 文件的 apachebench 给出了许多长度失败,而 .txt 则没有。但我对此没有任何解释,因为 .html 文件的内容是纯静态的(除了一些 ab 无法解析的 javascript)。
额外:我已经调整了 maxClients 以便服务器不会交换:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 20
MaxClients 20
MaxRequestsPerChild 5000
KeepAlive Off
HostnameLookups Off
我还禁用了 apache 访问日志并且 AllowOverride 等于 None
在对 html 文件进行压力测试期间,CPU 不会超过 20%
什么可能导致这种行为?