Apache中KeepAlive的含义、作用及配置

这里所有的请求是指http请求,对于一个请求各个阶段的划分,阻挡->域名解析->建立连接->发送请求->
【菜科解读】
引子
先来分析一个Yslow测试的一个页面的前端性能。
这里所有的请求是指http请求,对于一个请求各个阶段的划分,阻挡->域名解析->建立连接->发送请求->等待响应->接收数据。
当然不是每个请求都要包含所有过程。
在以上测试中,没有涉及到请求下载资源过程中还有一个部分:TCP请求的链接与断开,而这篇文章正式说这个请求的。
那么http请求和tcp请求是什么关系呢?简单点说就是一个tcp请求是比较靠近底层的,在它上面是http之类的应用请求,所以可以认为一个tcp请求包括很多个http请求(至于包括多少,apache中可以设定),同时tcp的链接与断开比http请求的链接和断开更需要消耗掉更多的内存资源和时间。
KeepAlive的含义
KeepAlive配置的含义:对于HTTP/1.1的客户端来说,将会尽量的保持客户的HTTP连接,通过一个连接传送多份HTTP请求响应。
这样对于客户端来说,可以提高50%左右的响应时间,而于服务器端来说则降低了更多个连接的开销。
不过这个依赖于客户端是否想保持连接。
IE默认是保持连接的,当你打开100个图片的网站时,IE有可能只打开2个连接,通过这两个连接传送数据,而不是开100个连接。
在Apache服务器中,KeepAlive是一个布尔值,On代表打开,Off代表关闭,这个指令在其他众多的HTTPD服务器中都是存在的。
KeepAliveTimeout为持久连接保持的时间,也就是说,在这此连接结束后开始计时,多长时间内没有重新发送HTTP请求,就断掉连接。
默认设置为5秒,这个值可以大点,但不能太大,否则会出现同时等候过多连接,导致多的内存被占用。
KeepAlive的作用
如何谋求网络带宽与服务器资源之间的平衡。
这个要根据具体情况,具体分析。
那么我们考虑3种情况: 1。
用户浏览一个网页时,除了网页本身外,还引用了多个javascript文件,多个css文件,多个图片文件,并且这些文件都在同一个HTTP服务器上。
2。
用户浏览一个网页时,除了网页本身外,还引用一个javascript文件,一个图片文件。
3。
用户浏览的是一个动态网页,由程序即时生成内容,并且不引用其他内容。
对于上面3中情况,我认为:1最适合打开KeepAlive,2随意,3最适合关闭KeepAlive 在Apache中,打开和关闭KeepAlive功能,服务器端会有什么异同呢?下面看理论分析。
打开KeepAlive后,意味着每次用户完成全部访问后,都要保持一定时间后才关闭会关闭TCP连接,那么在关闭连接之前,必然会有一个Apache进程对应于该用户而不能处理其他用户,假设KeepAlive的超时时间为10秒种,服务器每秒处理50个独立用户访问,那么系统中Apache的总进程数就是10*50=500个,如果一个进程占用4M内存,那么总共会消耗2G内存,所以可以看出,在这种配置中,相当消耗内存,但好处是系统只处理了50次TCP的握手和关闭操作。
如果关闭KeepAlive,如果还是每秒50个用户访问,如果用户每次连续的请求数为3个,那么Apache的总进程数就是50*3=150个,如果还是每个进程占用4M内存,那么总的内存消耗为600M,这种配置能节省大量内存,但是,系统处理了150次TCP的握手和关闭的操作,因此又会多消耗一些CPU资源。
在看看实践的观察。
在一组大量处理动态网页内容的服务器中,起初打开KeepAlive功能,经常观察到用户访问量大时Apache进程数也非常多,系统频繁使用交换内存,系统不稳定,有时负载会出现较大波动。
关闭了KeepAlive功能后,看到明显的变化是:Apache的进程数减少了,空闲内存增加了,用于文件系统Cache的内存也增加了,CPU的开销增加了,但是服务更稳定了,系统负载也比较稳定,很少有负载大范围波动的情况,负载有一定程度的降低;变化不明显的是:访问量较少的时候,系统平均负载没有明显变化。
总结一下: 在内存非常充足的服务器上,不管是否关闭KeepAlive功能,服务器性能不会有明显变化; 如果服务器内存较少,或者服务器有非常大量的文件系统访问时,或者主要处理动态网页服务,关闭KeepAlive后可以节省很多内存,而节省出来的内存用于文件系统Cache,可以提高文件系统访问的性能,并且系统会更加稳定。
KeepAlive配置文件
如果设置KeepAlive,找到这个设置的文件颇为费时,以前版本的大多配置都在httpd.conf文件,现在版本(2.4.2)的apache把不少配置都分离到不同的文件中了,于是,我只好一个文件一个文件的搜索。
...apache/conf/extra/httpd-default.conf
## This configuration file reflects default settings for Apache HTTP Server.## You may change these, but chances are that you may not need to.### Timeout: The number of seconds before receives and sends time out.#Timeout 60## KeepAlive: Whether or not to allow persistent connections (more than# one request per connection). Set to "Off" to deactivate.#KeepAlive On## MaxKeepAliveRequests: The maximum number of requests to allow# during a persistent connection. Set to 0 to allow an unlimited amount.# We recommend you leave this number high, for maximum performance.#MaxKeepAliveRequests 100## KeepAliveTimeout: Number of seconds to wait for the next request from the# same client on the same connection.#KeepAliveTimeout 5## UseCanonicalName: Determines how Apache constructs self-referencing# URLs and the SERVER_NAME and SERVER_PORT variables.# When set "Off", Apache will use the Hostname and Port supplied# by the client. When set "On", Apache will use the value of the# ServerName directive.#UseCanonicalName Off## AccessFileName: The name of the file to look for in each directory# for additional configuration directives. See also the AllowOverride # directive.#AccessFileName .htaccess## ServerTokens# This directive configures what you return as the Server HTTP response# Header. The default is 'Full' which sends information about the OS-Type# and compiled in modules.# Set to one of: Full | OS | Minor | Minimal | Major | Prod# where Full conveys the most information, and Prod the least.#ServerTokens Full## Optionally add a line containing the server version and virtual host# name to server-generated pages (internal error documents, FTP directory # listings, mod_status and mod_info output etc., but not CGI generated # documents or custom error documents).# Set to "EMail" to also include a mailto: link to the ServerAdmin.# Set to one of: On | Off | EMail#ServerSignature Off## HostnameLookups: Log the names of clients or just their IP addresses# e.g., www.apache.org (on) or 204.62.129.132 (off).# The default is off because it'd be overall better for the net if people# had to knowingly turn this feature on, since enabling it means that# each client request will result in AT LEAST one lookup request to the# nameserver.#HostnameLookups Off## Set a timeout for how long the client may take to send the request header# and body.# The default for the headers is header=20-40,MinRate=500, which means wait# for the first byte of headers for 20 seconds. If some data arrives,# increase the timeout corresponding to a data rate of 500 bytes/s, but not# above 40 seconds.# The default for the request body is body=20,MinRate=500, which is the same# but has no upper limit for the timeout.# To disable, set to header=0 body=0# RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
文件的注释部分已经给出了每个参数的具体含义,所以这里就没必要一一解释了。
Apache,中,KeepAlive,的,含义,、,作用,及为什么越南人多地少还能出口水稻给中国?
让人感到惊讶的是,这样一个人多地少的贫穷国家,竟然没有吃不饱饭的问题,甚至他们还能出口大米到中国,地主家余粮很多啊! 其实,这并不稀奇,河南省一个省的小麦产量就占全国的近三分之一。
平均下来,河南省的小麦就要供应全国14亿人口中的三分之一,近4亿人使用,比越南供一亿人的大米要厉害得多。
越南是世界上第二大大米出口国,大米不仅出口到中国,还出口到欧洲国家。
很多人怀疑,越南人靠什么种植这么多稻米的?其实这和越南的地理环境和政策有关。
越南的粮食作物相对单一,水稻的播种面积占到了全部耕地的四分之三左右。
越南的耕地面积不大,但是水稻的播种面积却很大。
90年代的时候,曾经把四分之三的耕地用来播种水稻。
其实越南的农作物很丰富,橡胶、菠萝等,但它们把其它作物的种植面积都压低,专一发展一种农作物,就是看重水稻的出口价值。
集中全力种植大米,提高产量是没有任何问题的。
我们虽然耕地面积比越南要多,但实际上农业大省主要是指中原地区和东北地区。
整个河南的小麦产量一度占到全国的28%,将近三分之一。
而东北地区的主要种植水稻、玉米,也占了很大一个部分。
就以河南为例,平均下来种植的小麦要供4亿人,一个省养活四亿人,比越南要强多了吧。
所以,我们国家完全能做到用一个省的耕地养活几亿人口,只是大家平时没意识到这一点。
我们是制造业大国,所以不可能把所有资源都去发展农业。
我们早已不是一个单纯的农业国家,而是新兴的工业化国家,不可能把全部资源投入到农业上面去。
比如,广东、上海等沿海地区,肯定主要发展商业和高科技产业,而不会发展农业。
同样,西北地区和西南地区也不适合大量的发展农业,因为当地的气候不适合农业发展。
越南的农业生产效率并不高,但是农业人口占比很大,劳动力充足。
而越南就不一样了,在十年前,越南还是一个纯粹的农业化国家,全国近一亿人,有将近一半人都是农民或者从事跟农业有关的行业,5千万人养活一亿人,再出口点大米,没问题吧。
而我们呢?实际上绝大多数农民都不再单纯的种地了,而是外出打工,或者做一些小生意,纯粹的农业生产者其实并不多。
而我们同样养活了14亿人。
越南地处热带,水稻一年可以收获三季,这也是它的优势。
越南地处热带附近,气温比较高,降水比较充足。
加上湄公河流域的土地十分肥沃,非常适合种植水稻。
而且当地的水稻可以一年收获三季,换句话说,同样土地,越南大米产量就要翻几倍。
这是气候问题,南方温度高,适合水稻生长,而北方气温低,只能收获一季。
这一点不用羡慕,只是气候决定的。
最后,我想说的是,其实在我们国家,基本上就是几个省的农业养活了全国。
现在有的地方发展制造业、有的地方发展金融,有的省份发展农业。
虽然大家的分工不同,但其实大家都在给国家作贡献。
随机文章隋炀帝杨广:历史上曾是才华横溢的翩翩美男子人类为什么不把火山浇灭,岩浆能融化地球万物/无能无力拉美羽蛇神的传说,掌管雨季丰收和生死(传闻是中国龙的化身)双头龟是怎么形成的,自然界基因突变成畸形/环境污染导致畸形增多冥王星和月球哪个大,月球直径3476公里(月球比冥王星大)
【精彩MV视频合集】欢迎观赏最新热门MV,让你沉醉在音乐的海洋中!
通过观赏这些精彩的MV视频,你可以享受到音乐带来的愉悦和感动,让你的心灵得到滋养。
工具原料:品牌型号:iPhone 12操作系统版本:iOS 14.5软件版本:YouTube App 16.17.4一、精彩MV视频合集1、MV视频的种类繁多,包括流行、摇滚、民谣、电子等各种音乐风格,满足不同人群的音乐口味。
2、MV视频的制作精良,画面精美,剧情丰富,能够给观众带来视觉上的享受。
3、MV视频中的音乐和歌词能够深入人心,让人产生共鸣,引发情感共鸣。
二、观赏MV视频的方法1、打开iPhone 12手机,进入YouTube App。
2、在搜索栏中输入【精彩MV视频合集】,点击搜索。
3、选择一个你感兴趣的MV视频,点击播放按钮开始观看。
三、分享和收藏MV视频1、在观看MV视频时,你可以点击视频下方的分享按钮,将视频链接分享给朋友。
2、如果你喜欢某个MV视频,你可以点击视频下方的收藏按钮,将其添加到你的收藏夹中,方便以后再次观看。
四、总结通过观赏【精彩MV视频合集】,你可以沉浸在音乐的海洋中,享受音乐带来的愉悦和感动。
这些精心制作的MV视频不仅给你带来视觉上的享受,更能引发你的情感共鸣。
使用iPhone 12手机上的YouTube App,你可以随时随地观看这些精彩的MV视频,并与朋友分享和收藏喜欢的视频。
推荐你下载YouTube App,开始你的音乐之旅!