如何优化apache httpd 参数
apache httpd使用非常广泛,其优化需要先了解在生产环境中的表现,可选择一种监控工具采集关键性能数据,例如 Hyperic HQ
内存优化
500M 内存到这个目下,以后在对数据处理时,就相当于往内存中写,而这些数据不会因清空缓存而数据丢失,而是相当于做了一个预热(保证数据都在内存中,把内存当作硬盘来用)
IO优化
修改文件描述符
vim /etc/security/limits.conf * hard nofile 102400 * soft nofile 102400
去掉文件访问时间
mount -o noatime /dev/sda2 /etc
日志(可以连接到/dev/null)
ln -s /dev/null /var/log/httpd/access_log
cpu优化
CPU由1---->2,增加服务器性能
网络优化
1)设置http的连线超时时间 Timeout 默认10s
2)KeepAlive on 占用的是内存
KeepAlive Tmieout 15
解决Time_wait数量多的时候
3)快速回收优化
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
注:短时间内不会有请求页面的时候,不需要开启。通常情况下静态页面开启网络数据进行压缩,用CPU来换取带宽,建议大家用apache作动态页面
apache httpd 自身优化
MPM模块:prefork模块优化
vim /etc/httpd/conf/httpd.conf <IfModule prefork.c> StartServers 80 MinSpareServers 50 MaxSpareServers 200 ServerLimit 500 MaxClients 500 MaxRequestsPerChild 0 </IfModule>
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
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、在服务器负载下降的时侯会自动减少子进程数。