解决Apache长时间占用内存大的问题,Apache 内存优化方法
2014-12-02 15:03:17   来源:   评论:0 点击:

问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache exe占用内存几百兆不减少?答:用记事本打开apache2 conf httpd conf,在centos5上装了kloxo,找了半天 httpd conf在 etc httpd conf

问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少?

答:用记事本打开apache2\conf\httpd.conf,

我在centos5上装了kloxo,找了半天 httpd.conf在 /etc/httpd/conf/目录下。

查找MaxRequestsPerChild,将MaxRequestsPerChild 0改成MaxRequestsPerChild 50即可。

影响apache性能的几个重要参数(conf/httpd.conf中设置)

KeepAlive 是否允许持续连接

MaxKeepAliveRequests 允许的持续连接的最大数

KeepAliveTimeout 持续连接在没有请求多少秒后切断

StartServers 最初启动时启动多少个服务器进程

MinSpareServers 空闲服务器进程的最小数

MaxSpareServers 空闲服务器进程的最大数

MaxClients 同时处理的请求数(最重要的参数,要少于ServerLimit)

MaxRequestsPerChild 每个子进程处理的最大请求数

它们之前的关系:

prefork控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和 MaxSpareServers。MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了 “MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:1、可防止意外的内存泄漏。2、在服务器负载下降的时侯会自动减少子进程数。

  ServerLimit 2000

  StartServers 10

  MinSpareServers 10

  MaxSpareServers 15

  MaxClients 1000

  MaxRequestsPerChild 2048

调试过程中用到的指令:

# ps -ef|grep http|wc -l //查看请求总数

# cat /proc/loadavg //查看平均负载(loadavg),loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。超过2以上就会明显感到性能降低了

# netstat -ant | grep :80 | wc -l //查看TCP连接数

# top //查看系统运行情况

相关热词搜索:apache

上一篇:服务器SCP安装正常,还是报bash: scp: command not found lost connection
下一篇:widows7系统下cmd中启动、停止MySQL服务器命令