Apache 性能确实很重

Apache 性能确实很重

我的公司运营着一个流量很大的网站,每天大约有15万次访问。

每次重启 apache 后,网站加载速度都很快。问题总是在几个小时后出现。

服务器配置:

Intel Core i3-2100 (3.1 GHz)
8 GB RAM

服务器apache正在运行进程:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                    
35986 apache    20   0 1046m  15m 6912 D 24.9  0.1   0:00.86 httpd                                                                                                      
35984 apache    20   0 1046m  15m 6916 D 21.9  0.1   0:00.78 httpd                                                                                                      
35987 apache    20   0 1046m  15m 6916 D 21.6  0.1   0:00.76 httpd                                                                                                      
35774 apache    20   0 1054m  35m  19m D  7.6  0.2   0:04.76 httpd                                                                                                      
35947 apache    20   0 1061m  43m  29m D  7.6  0.3   0:02.05 httpd                                                                                                      
35949 apache    20   0 1061m  44m  29m D  7.6  0.3   0:02.42 httpd                                                                                                      
35951 apache    20   0 1046m  15m 6912 D  7.6  0.1   0:01.69 httpd                                                                                                      
35952 apache    20   0 1046m  15m 6912 D  7.6  0.1   0:01.70 httpd                                                                                                      
35953 apache    20   0 1045m  15m 6900 D  7.6  0.1   0:01.48 httpd                                                                                                      
35983 apache    20   0 1046m  15m 6912 D  7.6  0.1   0:01.00 httpd                                                                                                      
35418 apache    20   0 1067m  84m  64m D  7.3  0.5   1:14.12 httpd                                                                                                      
35761 apache    20   0 1054m  36m  19m D  7.3  0.2   0:10.78 httpd                                                                                                      
35770 apache    20   0 1066m  59m  39m D  7.3  0.4   0:04.12 httpd                                                                                                      
35771 apache    20   0 1056m  36m  19m D  7.3  0.2   0:05.51 httpd 

这是 apache 重启后立即出现的 ab 结果:

ab -n 300 -c 30 http://www.vibiznews.com/

Server Software:        Apache
Server Hostname:        www.vibiznews.com
Server Port:            80

Document Path:          /
Document Length:        182372 bytes

Concurrency Level:      30
Time taken for tests:   40.708 seconds
Complete requests:      30
Failed requests:        15
   (Connect: 0, Receive: 0, Length: 15, Exceptions: 0)
Write errors:           0
Total transferred:      5475675 bytes
HTML transferred:       5471175 bytes
Requests per second:    0.74 [#/sec] (mean)
Time per request:       40708.364 [ms] (mean)
Time per request:       1356.945 [ms] (mean, across all concurrent requests)
Transfer rate:          131.36 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        5    6   1.4      5       8
Processing: 17815 28229 9292.6  33340   40703
Waiting:    17731 28121 9339.8  33295   40666
Total:      17820 28235 9292.4  33345   40708

Percentage of the requests served within a certain time (ms)
  50%  33345
  66%  35458
  75%  37776
  80%  38302
  90%  39178
  95%  39302
  98%  40708
  99%  40708
 100%  40708 (longest request)

以下是我当前的 Apache 配置:

Apache API Version  20120211

StartServers 5
MaxClients 220
ServerLimit 220
MinSpareServers 8
MaxSpareServers 16
MaxRequestsPerChild 4000

几个小时后,ab 的结果apr_pollset_poll: The timeout specified has expired (70007

我通过这种方式计算了最大客户端数量:8196(物理内存)/35(Apache 平均内存使用量)= 234.17,四舍五入为 230,以便为 Apache 以外的其他进程提供空间。

我的问题是,对于给定的条件,apache 配置是否最佳?

我通常看到其他人的 StartServer 和 MinSpareServer 配置为 10 左右,而 MaxRequestsPerChild 配置为 0。

该配置是否安全,尤其是 MaxRequestsPerChild 为 0 时?如果安全,那么有什么好处?

任何想法都将不胜感激。

谢谢!

答案1

这不是一个答案 - 但对于评论来说它太长了,并且问题无法以目前的形式得到回答。

每天约 15 万

15万什么? 真正重要的唯一指标是并发点击数/平均持续时间。

您没有提供任何有关流量的详细信息 - 显然它没有提供静态内容。您没有提供任何详细信息。

每个请求 1.3 秒非常慢。

服务器限制 220

看起来很低。

35(Apache 平均内存使用量)

你是怎么得到它的?

这不是计算 serverlimit/maxclients 的正确方法。尝试测量不同负载水平下的可用内存(减去缓冲区/缓存)并将其与服务器数量进行对比。

对于知道自己在做什么的人来说,弄清楚在这里的表现要问什么正确的问题至少需要几个小时 - 找到答案将花费更长的时间。

您应该能够运行比这更多的服务器 - 但您的性能问题并不在 httpd 配置中。

相关内容