今天继续给大家介绍Linux运维的相关知识,本文主要内容是Apache的长链接功能设置实战。
一、开启长链接的效果
当Apache服务器开启长链接Keepalive后,会减少TCP三次握手的时间,但是会消耗服务器内存来维持链接。因此,是否开启长链接,以及合理的配置长链接失效时间,需要根据具体的业务场景来定。
如果设置不开启长链接,或者开启长链接但是链接失效时间很短,就可能出现客户端频繁链接Apache服务器的场景,会消耗系统资源,并且使得业务响应时间变长;如果开启长链接并且设置链接失效时间很长,那么Apache服务器中就会存在很多可以关闭但是还在维持的链接,也会消耗系统资源,影响正常服务的提供。
因此,网站是否开启长链接以及链接失效时间的设定,需要看网站的业务、流量大小以及服务器的硬件设备。
二、开启长链接实战
Apache开启长链接设置非常简单,只需要在Apache的主配置文件中,找到如下红线位置:
该处原本是在#注释内,删除#将其解锁,就可以配置引用conf/extra目录下的httpd-default.conf文件,该文件如下所示:
在该文件中,有三个参数,KeepAlive表示的是是否开启长链接功能,On表示开启,Off表示关闭。在该参数配置为开启的情况下,Timeout为链接失效时间,单位为秒,Timeout的值表示以下三种事件的时间长度:
1、接受一个GET请求所耗费的时间。
2、POST或者是PUT请求时,接受两个TCP包之间的时间。
3、应答时,两个TCP包传输中两个ACK包之间的时间。
MaxKeepAliveRequests表示链接失效请求次数,当超出该参数设定的次数时,长链接也会失效。
三、案例剖析
从上可以看出,其实Apache配置开启长链接非常简单,但是问题在于我们需要合理的进行配置。下面来看一下案例:
假设一个Apache服务器每秒需要处理50个访问请求,每个访问请求并发的请求数为每秒2个,每个请求需要耗费4M内存,如果长链接失效时间设定为60秒,则系统中Apache进程的总数为5060,为3000个,需要耗费30004M=12G的内存,在这种情况下,系统以消耗12G内存的代价,换来的是只处理50次TCP三次握手和四次挥手操作。如果关闭长链接,则会消耗50*4M的内存,约有200M,而每秒需要处理的TCP链接数则为100次。
综上所述,对于长链接是否开启我们通常遵循以下原则:
1、如果内存和CPU都足够,则无论是否开启长链接都不受影响。
2、如果存在一种情况,客户端会频繁的访问服务器资源,则建议开启长链接功能。
最后,给出一个生产环境中的默认配置:开启长链接,长链接失效时间为30秒,长链接失效次数为100。这样的配置,在一般的业务场景下,可以兼顾内存和CPU,起到比较好的效果。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40228200/article/details/122652684