<ul id="g60s4"><pre id="g60s4"></pre></ul>
<strong id="g60s4"><nav id="g60s4"></nav></strong>
<ul id="g60s4"></ul>
  • <tr id="g60s4"></tr>
  • 
    
  • 或者

    Keep Alive 優(yōu)化例子與總結(jié)

    作者:月光邊境 瀏覽:185 發(fā)布時(shí)間:2017-08-29
    分享 評(píng)論 0

    看到有人問(wèn)Connection: close和Connection:keep-alive有什么區(qū)別?想起以前學(xué)習(xí)到的一篇文章,今天轉(zhuǎn)載來(lái),大家看看,我也再溫故知新下。如果有問(wèn)題補(bǔ)充的在下面可以擴(kuò)充下。等忙完了,我也再補(bǔ)充些。

      一、問(wèn)題現(xiàn)象: 一個(gè)JSP頁(yè)面,居然要耗時(shí)40多秒。網(wǎng)頁(yè)中有大量的圖片的CSS

      問(wèn)題解決: 原因也找了半天,原來(lái)Apache配置里面,把Keep-Alive的開(kāi)關(guān)關(guān)閉了。這個(gè)是個(gè)大問(wèn)題,工程師為什么要關(guān)閉它,原來(lái)他考慮的太簡(jiǎn)單了,我們知道Apache適合處于短連接的請(qǐng)求,處理時(shí)間越短,并發(fā)數(shù)才能上去,原來(lái)他是這么考慮,但是沒(méi)有辦法,只能這樣了,還是打開(kāi)Keep-Alive開(kāi)關(guān)吧。

      當(dāng)然,不是所有的情況都設(shè)置KeepAlive為On,下面的文字總結(jié)比較好:

      【在使用apache的過(guò)程中,KeepAlive屬性我一直保持為默認(rèn)值On,其實(shí),該屬性設(shè)置為On還是Off還是要具體問(wèn)題具體分析的,在生產(chǎn)環(huán)境中的影響還是蠻大的。

      KeepAlive選項(xiàng)到底有什么用處?如果你用過(guò)Mysql ,應(yīng)該知道Mysql的連接屬性中有一個(gè)與KeepAlive 類(lèi)似的Persistent Connection,即:長(zhǎng)連接(PConnect)。該屬性打開(kāi)的話,可以使一次TCP連接為同一用戶(hù)的多次請(qǐng)求服務(wù),提高了響應(yīng)速度。

      比如很多網(wǎng)頁(yè)中圖片、CSS、JS、Html都在一臺(tái)Server上,當(dāng)用戶(hù)訪問(wèn)其中的Html網(wǎng)頁(yè)時(shí),網(wǎng)頁(yè)中的圖片、Css、Js都構(gòu)成了訪問(wèn)請(qǐng)求,打開(kāi)KeepAlive 屬性可以有效地降低TCP握手的次數(shù)(當(dāng)然瀏覽器對(duì)同一域下同時(shí)請(qǐng)求的圖片數(shù)有限制,一般是2 見(jiàn)下文章節(jié) 減少域名解釋的開(kāi)銷(xiāo)),減少httpd進(jìn)程數(shù),從而降低內(nèi)存的使用(假定prefork模式)。MaxKeepAliveRequests 和KeepAliveTimeOut 兩個(gè)屬性在KeepAlive =On時(shí)起作用,可以控制持久連接的生存時(shí)間和最大服務(wù)請(qǐng)求數(shù)。

      不過(guò),上面說(shuō)的只是一種情形,那就是靜態(tài)網(wǎng)頁(yè)居多的情況下,并且網(wǎng)頁(yè)中的其他請(qǐng)求與網(wǎng)頁(yè)在同一臺(tái)Server上。當(dāng)你的應(yīng)用動(dòng)態(tài)程序(比如:php )居多,用戶(hù)訪問(wèn)時(shí)由動(dòng)態(tài)程序即時(shí)生成html內(nèi)容,html內(nèi)容中圖片素材和Css、Js等比較少或者散列在其他Server上時(shí),KeepAlive =On反而會(huì)降低Apache 的性能。為什么呢?

      前面提到過(guò),KeepAlive =On時(shí),每次用戶(hù)訪問(wèn),打開(kāi)一個(gè)TCP連接,Apache 都會(huì)保持該連接一段時(shí)間,以便該連接能連續(xù)為同一client服務(wù),在KeepAliveTimeOut還沒(méi)到期并且MaxKeepAliveRequests還沒(méi)到閾值之前,Apache 必然要有一個(gè)httpd進(jìn)程來(lái)維持該連接,httpd進(jìn)程不是廉價(jià)的,他要消耗內(nèi)存和CPU時(shí)間片的。假如當(dāng)前Apache 每秒響應(yīng)100個(gè)用戶(hù)訪問(wèn),KeepAliveTimeOut=5,此時(shí)httpd進(jìn)程數(shù)就是100*5=500個(gè)(prefork 模式),一個(gè)httpd進(jìn)程消耗5M內(nèi)存的話,就是500*5M=2500M=2.5G,夸張吧?當(dāng)然,Apache 與Client只進(jìn)行了100次TCP連接。如果你的內(nèi)存夠大,系統(tǒng)負(fù)載不會(huì)太高,如果你的內(nèi)存小于2.5G,就會(huì)用到Swap,頻繁的Swap切換會(huì)加重CPU的Load。

      現(xiàn)在我們關(guān)掉KeepAlive ,Apache 仍然每秒響應(yīng)100個(gè)用戶(hù)訪問(wèn),因?yàn)槲覀儗D片、js、css等分離出去了,每次訪問(wèn)只有1個(gè)request,此時(shí)httpd的進(jìn)程數(shù)是100*1=100個(gè),使用內(nèi)存100*5M=500M,此時(shí)Apache 與Client也是進(jìn)行了100次TCP連接。性能卻提升了太多。

      二、 總結(jié)

      1、當(dāng)你的Server內(nèi)存充足時(shí),KeepAlive =On還是Off對(duì)系統(tǒng)性能影響不大。

      2、當(dāng)你的Server上靜態(tài)網(wǎng)頁(yè)(Html、圖片、Css、Js)居多時(shí),建議打開(kāi)KeepAlive 。

      3、當(dāng)你的Server多為動(dòng)態(tài)請(qǐng)求(因?yàn)檫B接數(shù)據(jù)庫(kù),對(duì)文件系統(tǒng)訪問(wèn)較多),KeepAlive 關(guān)掉,會(huì)節(jié)省一定的內(nèi)存,節(jié)省的內(nèi)存正好可以作為文件系統(tǒng)的Cache(vmstat命令中cache一列),降低I/O壓力。

      PS:當(dāng)KeepAlive =On時(shí),KeepAliveTimeOut的設(shè)置其實(shí)也是一個(gè)問(wèn)題,設(shè)置的過(guò)短,會(huì)導(dǎo)致Apache 頻繁建立連接,給Cpu造成壓力,設(shè)置的過(guò)長(zhǎng),系統(tǒng)中就會(huì)堆積無(wú)用的Http連接,消耗掉大量?jī)?nèi)存,具體設(shè)置多少,可以進(jìn)行不斷的調(diào)節(jié),因你的網(wǎng)站瀏覽和服務(wù)器配置 而異。

      三、減少域名解釋的開(kāi)銷(xiāo)

      對(duì)于HTTP/1.0來(lái)說(shuō)可以充分利用瀏覽器默認(rèn)最大并發(fā)連接數(shù)比HTTP/1.1多的好 處,實(shí)現(xiàn)不增加新域名的開(kāi)銷(xiāo)而更高的并行下載,減少域名解釋的開(kāi)銷(xiāo)(注:IE 6,7在HTTP/1.0中默認(rèn)最大并發(fā)連接數(shù)為4,在HTTP/1.1中默認(rèn)最大并發(fā)連接數(shù)為2,IE8都為6,F(xiàn)irefox2在HTTP/1.0中 默認(rèn)最大并發(fā)連接數(shù)為2 在HTTP/1.1中默認(rèn)最大并發(fā)連接數(shù)為8,firefox 3默認(rèn)都是6),根據(jù)10年7月Google索引的42億個(gè)網(wǎng)頁(yè)的統(tǒng)計(jì)報(bào)告,每張網(wǎng)頁(yè)里包含29.39個(gè)圖片,7.09個(gè)外部腳本,3.22個(gè)外部CSS 樣式表,如果設(shè)置了Keep-Alive并且合理控制Keep-Alive TimeOut這個(gè)參數(shù)可以大量的節(jié)約連接的開(kāi)銷(xiāo),提高相應(yīng)速度。如果設(shè)置不好,在大并發(fā)的情況小,因維持大量連接而使服務(wù)器資源耗盡,而對(duì)于目前國(guó)內(nèi)大 部分的用戶(hù)使用的還是IE6,7的情況下關(guān)閉Keep-Alive可以充分利用瀏覽器默認(rèn)最大并發(fā)連接數(shù)的好處實(shí)現(xiàn)不增加額外的開(kāi)銷(xiāo)頁(yè)面快速的展示。


    老司机67194精品线观看| 亚洲精品乱码久久久久久不卡| 91福利精品老师国产自产在线| 久久99精品国产一区二区三区| 国产成人精品一区二三区在线观看| 亚洲日韩久久综合中文字幕| 八区精品色欲人妻综合网| 国产精品美女自在线观看免费| 亚洲AV永久无码精品网站在线观看| 久久久国产精品四虎| 精品一区二区三区在线播放视频 | 99麻豆久久久国产精品免费| 亚洲精品一级无码鲁丝片| 精品在线视频一区| 秋霞日韩久久理论电影| 亚洲日韩乱码中文无码蜜桃| 亚洲高清专区日韩精品| 日韩亚洲人成在线综合日本| 日韩毛片在线免费观看| 国产成人精品日本亚洲网站| 日韩中文字幕不卡| 日韩精品久久久肉伦网站 | 9久热精品免费观看视频| 国产精品免费久久久久久久久| 亚洲国产综合精品中文字幕| heyzo高无码国产精品| 国产精品美女久久久网AV| 精品免费久久久久国产一区| 国产精品午夜一级毛片密呀| 国产免费久久精品99久久| 久久免费国产精品| 最新精品露脸国产在线| 亚洲精品字幕在线观看| 伊人久久综合精品无码AV专区| 国产亚洲精品美女久久久| 亚洲国产另类久久久精品| 久久er国产精品免费观看2| 日韩精品成人一区二区三区| 亚洲av永久无码精品秋霞电影影院 | 日韩精品久久久久久久电影蜜臀| 一个人免费日韩不卡视频|