优化由于httpd引起的服务器高负载

20150728231343

负载图上图。

找了半天的原因。做了一些优化:

优化完成的时候访问量已经没那么高了。所以也不知道效果到底如何。看看以后效果吧。

[root@localhost ~]# netstat -an | grep ESTABLISHED | wc -l
210  已连接数
[root@localhost ~]# ps aux|grep httpd|wc -l
55 进程数
[root@localhost ~]# ps -ef|grep httpd|wc -l
55  apache 能处理的数
[root@localhost ~]# netstat -nat|grep -i “80”|wc -l
698  网络请求数
实时检测HTTPD连接数:
watch -n 1 -d “pgrep httpd|wc -l”
先修改./apache/conf/httpd.conf文件。 
               # vi httpd.conf 
               将“#Include conf/extra/httpd-mpm.conf”前面的 # 去掉。 
               保存。 
      
       二:再修改./apache/conf/extra/httpd-mpm.conf文件。 
               # vi httpd-mpm.conf 
             找到<IfModule mpm_prefork_module> 这一行 
                   原: 
                         <IfModule mpm_prefork_module> 
                           StartServers                 5 
                           MinSpareServers           5 
                           MaxSpareServers           10 
                           MaxClients                     150 
                           MaxRequestsPerChild   0 
                     </IfModule> 
               修改后
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
如果空闲进程小于MaxSpareServers,Apache将会删除多余的空闲进程,释放服务器资源。
进程数的最大值由MaxClients控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients ≤ ServerLimit ≤ 20000
MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程)。