linux apache参数优化,linux下 Apache/http 进程优化说明

对于网站来讲主要是CPU、TCP链接数这二者。 CPU表如今任务数上,在Linux下使用平均负载(loadavg)来衡量。可经过如下命令来查看:

cat /proc/loadavg

对于单CPU的服务器,loadavg高于1,代表任务队列出现了等待,CPU忙不过来了。超过2以上就会明显感到性能下降了。

TCP链接数可经过如下命令查看:

netstat -ant | grep :80 | wc -l

若是要实时监控服务器资源,可参考OpenNMS项目。

注1:内存不算,低廉的价格使得网站服务器不多有由于内存不够而down掉的。

注2:CPU%是瞬时的CPU使用率,一般没法反映出总体负载。

Apache配置命令

Apache在资源方面的配置命令主要有如下几条。

KeepAlive 是否容许持续链接

MaxKeepAliveRequests 容许的持续链接的最大数

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

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

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

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

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

KeepAlive

前三个KeepAlive相关的指令用来设置持续链接。一般都是每一个HTTP请求对应一个TCP链接,但对于一个包含许多图片的网页来讲,客户端会 在瞬间发出多个HTTP请求,此时屡次创建TCP链接会大大下降响应速度。此时经过持续链接,能够容许用户在一个TCP链接中发出多个HTTP请求,减小 TCP链接创建次数,提升响应速度。

这种状况下,应当经过access_log统计出连续HTTP请求出现的次数、间隔时间、访问量,以肯定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 过小发挥不了持续链接的做用;太大了,持续链接迟迟不断,浪费TCP链接数不说,更糟糕的是系统中的 httpd 进程数目会所以不断增长,使得系统负载升高,甚至会致使服务器失去响应。

可是在处理动态网页请求时,因为用户不多会瞬间请求多个动态网页(通常都是打开页面以后阅读好半天才点下一页),此时打开KeepAlive无异于浪费TCP链接数。

结论就是,放动态网页的就 KeepAlive Off 以提升吞吐量,放静态内容如图片、js代码等就 KeepAlive On 以减小TCP链接创建次数。

但一个Apache只能有一种 KeepAlive 设置,怎么办?很简单,弄两台服务器,一个专门放脚本,一个专门放图片。

服务器进程数

再说说下面的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改,由于Apache会自动调节子进程数。 MinSpareServers和MaxSpareServers是空闲子进程数目,何为空闲子进程?假设某一时刻系统中共有30个httpd进程,其中 一个是父进程,20个在处理请求,那么空闲子进程数就是9个。

空闲进程少了,大量的突发请求会使服务器疲于进程建立,下降效率;而太多反而会增长系统进程数,增大系统负载。

实际上,默认值已足够处理通常的突发请求,因此除非是流量特别特别巨大的网站,不然不要修改这些设置。

就算流量特别特别大,也是经过负载平衡系统来下降每台服务器的访问量,不会修改这几个值。

MaxRequestsPerChild

这个值设置子进程在处理多少个请求以后自动结束。这个选项是用来防止进程因为内存泄漏等使用内存过多。通常默认值便可。

总结

影响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可使每一个子进程处理更多的请求,但如 果设成非零值也有两点重要的好处:一、可防止意外的内存泄漏。二、在服务器负载降低的时侯会自动减小子进程数。

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的内存使用

apache进程在使用内存时,是“渐长”的。也就是说,直到这个进程死掉,使用内存的数量是一直增加而不会减小的。这样的话,apache进程使 用内存的多少,就决定于你的应用程序最大使用内存量了。

keepalive参数

KeepAliveTimeout 这个参数决定了,在什么都不作以前,一个http进程可以等待多长时间?设想一下,若是keepalive设置为on,而 keepalivetimeout设置为一个比较大的数字,apache占用内存会很快的增加。这是由于,一个apache进程完成了一个任务(并达到了 必定的内存占用,想一下“渐进”模式),并不会立刻退出,而是等待一个keepalivetimeout时间。假设用户的连接请求持续不断的到来,则积累 起来的无用的apache进程就会至关多,直到timeout,这些进程才会被杀死。

可是,keepalive的确对于静态的文件,好比图像文件的传送是颇有效的,所以,keepalive要设置为on,(off)可是 keepalvietimeout要设置的小些,好比5s 15

MaxRequestsPerChild

这个参数是说,apache进程在处理了多少个请求以后,必须退出,从新开始,以避免在处理中的内存问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值