如何优化apache httpd 参数

apache httpd使用非常广泛,其优化需要先了解在生产环境中的表现,可选择一种监控工具采集关键性能数据,例如 Hyperic HQ 

内存优化

1)内存由1G-->2G
2)去除不必要的模块(针对实际环境)
3)分出部分独立空间存储经常访问的页面元素 mount -o size=500M -t tmpfs none /tmp/apache

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>
 
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、在服务器负载下降的时侯会自动减少子进程数。