Apache长连接:
KeepAlive Off/On 保持连接,会减少三次握手,但是会消耗内存,是否打开,取决于单位时间内是否进行多次连接(三次握手),
一个连接有多次请求的,建议打开,并适当调整KeepAliveTimeout时间。
在Apache的httpd-default.conf中,KeepAlive指的是保持连接活跃,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。保持连接是基于来源的IP地址的。
KeepAlive的连接活跃时间当然是受KeepAliveOut限制的,如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话,第一次连接会中断,再新建第二个连接。
所以,一般情况下,图片较多的网站应该把KeepAlive设为On,但是KeepAliveTimeOut应该设置为多少秒就是一个值得讨论的问题了。
如果KeepAliveTimeOut设置的时间过短,例如设置为1S,那么Apache就会频繁的建立新连接,当然会消耗很多的资源;反过来,如果KeepAliveTimeOut设置的时间过长,例如设置为300秒,那么Apache中肯定有很多无用的连接会占用服务器的资源,也不是一件好事情,所以这是需要综合考虑的问题!!
长连接配置:
[root@localhost ~]# vim /etc/httpd/httpd.conf
需要将httpd-default.conf调用的include打开;#取消掉!
[root@localhost ~]# vim /etc/httpd/extra/httpd-default.conf
其中:
MaxKeepAliveRequests 默认 100 #最大活跃请求
一个已经建立好的Keep-Alive连接,允许发送的请求的个数,一旦建立连接,要么就是个数达到了,然后断开,要么就是等KeepAliveTimeOut时间到了断开连接;MaxKeepAliveRequests指令限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为”0“,将不限制请求的数目;一般建议最好将此值设为一个比较大的值,以确保最优的服务器性能;
这个数字的设置,必须考虑在一个时间段内,同一个用户IP访问你的服务会发多少请求,要结合KeepAliveTimeOut参数来考虑。
用户需要间隔时间不大于KeepAliveTimeOut的时间内,连续请求10个文件,那么这个参数就可以设置成10;
如果用户在连续时间里不断请求访问,则这个KeepAliveOut得设置得更多,否则就重新建立连接下载;
一旦用户连续进行了10个请求后,并且这个用户肯定在完成这些请求后5秒内不会再请求,甚至要在之后的更长时间才请求,那么这个KeepAliveTimeOut时间就可以设置的很短,以便尽早断开这种用户,把资源让给其他用户;
KeepAlive需要考虑的因素很多,所以突然就明白了,很多企业中需要拿到访问源地址,做运维审计,是有道理的!!
TimeOut
默认:60秒
”TimeOut“指令用于设置Apache等待以下三种事件的事件长度;
1、接受一个GET请求耗费的总事件
2、POST或PUT请求时,接受两个TCP包之间的事件
3、应答时TCP包传输中两个ACK包之间的时间
比如:Apache需要把jsp文件传给后端tomcat服务器,而tomcat服务器关了,这时这个链接需要等待的超时时间,由TimeOut控制。
总结:
1、如果内存和CPU都足够,开启和关闭KeepAlive对性能影响不大。
2、如果考虑服务器压力,如果同一个客户端IP对服务器会经常访问,建议开启KeepAlive
参考数值:
KeepAlive On
KeepAliveTimeout 30
MaxKeepAliveRequests 100 #这个值一般不需要配置。