不可忽略的apache 的 Keep Alive

轉載鏈接:http://hi.baidu.com/jx_iben/item/d5fe91feed74495ec9f337f1

在網頁開發過程中,Keep-Alive是HTTP協議中非常重要的一個屬性。大家知道HTTP構建在TCP之上。在HTTP早期實現中,每個HTTP請求都要打開一個socket連接。這種做效率很低,因為一個Web 頁面中的很多HTTP請求都指向同一個服務器。例如,很多為Web頁面中的圖片發起的請求都指向一個通用的圖片服務器。持久連接的引入解決了多對已請求服務器導致的socket連接低效性的問題。它使瀏覽器可以再一個單獨的連接上進行多個請求。瀏覽器和服務器使用Connection頭ilai指出對Keep-Alive的支持。

?

筆者在去年遇到一個跟Keep-Alive的問題:

?

問題現象: 一個JSP頁面,居然要耗時40多秒。網頁中有大量的圖片的CSS

?

問題解決: 原因也找了半天,原來Apache配置里面,把Keep-Alive的開關關閉了。這個是個大問題,工程師為什么要關閉它,原來他考慮的太簡單了,我們知道Apache適合處于短連接的請求,處理時間越短,并發數才能上去,原來他是這么考慮,但是沒有辦法,只能這樣了,還是打開Keep-Alive開關吧。

?

當然,不是所有的情況都設置KeepAlive為On,下面的文字總結比較好:

?

【在使用apache的過程中,KeepAlive屬性我一直保持為默認值On,其實,該屬性設置為On還是Off還是要具體問題具體分析的,在生產環境中的影響還是蠻大的。

KeepAlive選項到底有什么用處?如果你用過Mysql ,應該知道Mysql的連接屬性中有一個與KeepAlive 類似的Persistent Connection,即:長連接(PConnect)。該屬性打開的話,可以使一次TCP連接為同一用戶的多次請求服務,提高了響應速度。

比如很多網頁中圖片、CSS、JS、Html都在一臺Server上,當用戶訪問其中的Html網頁時,網頁中的圖片、Css、Js都構成了訪問請求,打開KeepAlive 屬性可以有效地降低TCP握手的次數(當然瀏覽器對同一域下同時請求的圖片數有限制,一般是2),減少httpd進程數,從而降低內存的使用(假定prefork模式)。MaxKeepAliveRequests 和KeepAliveTimeOut 兩個屬性在KeepAlive =On時起作用,可以控制持久連接的生存時間和最大服務請求數。

不過,上面說的只是一種情形,那就是靜態網頁居多的情況下,并且網頁中的其他請求與網頁在同一臺Server上。當你的應用動態程序(比如:php )居多,用戶訪問時由動態程序即時生成html內容,html內容中圖片素材和Css、Js等比較少或者散列在其他Server上時,KeepAlive =On反而會降低Apache 的性能。為什么呢?

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

現在我們關掉KeepAliveApache 仍然每秒響應100個用戶訪問,因為我們將圖片、js、css等分離出去了,每次訪問只有1個request,此時httpd的進程數是100*1=100個,使用內存100*5M=500M,此時Apache 與Client也是進行了100次TCP連接。性能卻提升了太多。

總結:

1、當你的Server內存充足時,KeepAlive =On還是Off對系統性能影響不大。

2、當你的Server上靜態網頁(Html、圖片、Css、Js)居多時,建議打開KeepAlive

3、當你的Server多為動態請求(因為連接數據庫,對文件系統訪問較多),KeepAlive 關掉,會節省一定的內存,節省的內存正好可以作為文件系統的Cache(vmstat命令中cache一列),降低I/O壓力。

PS:當KeepAlive =On時,KeepAliveTimeOut的設置其實也是一個問題,設置的過短,會導致Apache 頻繁建立連接,給Cpu造成壓力,設置的過長,系統中就會堆積無用的Http連接,消耗掉大量內存,具體設置多少,可以進行不斷的調節,因你的網站瀏覽和服務器配置 而異


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276291.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

碼云 Gitee 新增倉庫訪問之 IP 白名單功能

碼云企業版上線 IP 白名單功能,該功能主要用于企業禁止非指定 IP 訪問代碼倉庫。如下圖所示:使用方法:進入企業控制面板 -> 管理 -> 安全設置添加允許訪問 Git 倉庫的 IP 地址啟用安全選項:只允許在信任范圍內推拉代碼其他關…

oracle 實時查詢最耗CPU資源的SQL語句

1. 先通過top命令查看產用資源較多的spid號 2.查詢當前耗時的會話ID,用戶名,sqlID等:select sid,serial#,machine,username,program,sql_hash_value,sql_id, to_char(logon_time,yyyy/mm/dd hh24:mi:ss) as login_time from v$sessionw…

福利 | 抽獎送現金送書《Web前端工程師修煉之道》

很多關注了我的公眾號的粉絲可能都不知道我,趁這次機會簡單介紹下。你好,我是若川。江西人,某不那么知名的陶瓷大學畢業生,目前在杭州從事前端開發工作。常以若川為名混跡于江湖。更詳細的可以點擊關于我我歷時一年才寫了《學習源…

jQuery 1.9.1中live()變更

轉載鏈接:http://www.360doc.com/content/13/1222/22/14022539_339358149.shtml 開始的時候在jQuery.1.7.1中使用了.live()覺得很好用,特別是在綁定事件之后再加入的元素的事件綁定上很方便(第一次live之后以后添加的元素就不需要綁定啦) 后來jQuery更…

蒙特卡洛方法_基本理論-蒙特卡洛方法與定積分

全球圖形學領域教育的領先者、自研引擎的倡導者、底層技術研究領域的技術公開者,東漢書院在致力于使得更多人群具備內核級競爭力的道路上,將帶給小伙伴們更多的公開技術教學和視頻,感謝一路以來有你的支持。我們正在用實際行動來幫助小伙伴們…

WebServices 基礎知識

1. 有關生存期的補充正常情況下,每次調用 WebMethod,服務器都會創建一個新的 WebService 對象,即便客戶端使用同一個代理對象多次調用 WebMethod。而我們一旦調用了有緩存標記的 WebMethod,只要未超出緩存期,WebServic…

sass和compass基礎用法

一、基本命令 sass都是通過gem安裝,以下是一些基礎的命令移除ruby的鏡像地址 gem sources --remove https://rubygems.org/添加淘寶的鏡像 gem source -a http://ruby.taobao.org查看鏡像 gem source -v單文件轉換命令 sass style.scss style.css單文件監聽命令&am…

字節面試官:如何實現Ajax并發請求控制

偷偷告訴你,點此抽獎送紅包還送3本比紅寶書還貴的書實現一個批量請求函數 multiRequest(urls, maxNum),要求如下: ? 要求最大并發數 maxNum ? 每當有一個請求返回,就留下一個空位,可以增加新的請求 ? 所有請求完成后…

Jquery 中 ajaxSubmit使用講解

轉載鏈接&#xff1a;http://blog.csdn.net/h70614959/article/details/8810270 1 引入依賴腳本 <script type"text/javascript" src"/js/jquery/jquery.form.js"></script> //ajaxForm 依賴腳本<script type"text/javascript"…

接口與抽象類

接口中的屬性 默認是 public static final類型 就算你不加 默認也是存在 方法默認都是public abstract類型 不加默認也存在 比如 interface K { String abc"sdfd"; void add() throws Exception; } 實際上編譯時 是這樣 interface K { Public static final String a…

制造行業電子化簽約及印控一體化解決方案

當生產“智造化”、營銷“數字化”成為趨勢&#xff0c;生產制造型企業如何實現產品生產-銷售全流程提速降本&#xff1f;生產制造型企業為了在生產、營銷環節降低成本、提升效率&#xff0c;經營模式上常有如下特征&#xff1a;? 原料導向&#xff0c;多點協同生產&#xff1…

python 點擊按鈕采集圖片_python多線程采集圖片

cmd中運行>python untitled2.py 圖片的網站import requestsimport threadingfrom bs4 import BeautifulSoupimport sysimport osif len(sys.argv) ! 2:print("Usage : " )print(" python main.py [URL]" )exit(1)# config-starturl sys.argv[1]thre…

一起手寫Vue3核心模塊源碼,掌握閱讀源碼的正確方法

最近和一個獵頭聊天&#xff0c;說到現在前端供需脫節的境況。一方面用人方招不到想要的中高級前端&#xff0c;另一方面市場上有大量初級前端薪資要不上價。特別是用 Vue 框架的&#xff0c;因為好上手&#xff0c;所以很多人將 Vue 作為入門框架&#xff0c;但學得深的人并不…

jquery|javascript 回車事件

轉載鏈接&#xff1a;http://www.cnblogs.com/wenbo/archive/2011/08/20/2147014.html 轉載鏈接: http://www.2cto.com/kf/201202/119741.html jquery實現回車事件&#xff0c;代碼如下&#xff1a; 全局&#xff1a; $(function(){ document.onkeydown function(e){…

【Vegas原創】ASP 0131 不允許父路徑的解決

現象&#xff1a; Active Server Pages 錯誤 ASP 0131 不允許的父路徑 /admin/login.asp&#xff0c;行 2 包含文件 ../include/config.asp 不能用 .. 表示父目錄。 解決方案&#xff1a; IIS6>站點屬性>主目錄>配置>選項>啟用父路徑 轉載于:https://www.cnblog…

騰訊正式宣布成立技術委員會,要對組織架構下狠手

2019 年伊始&#xff0c;社交巨人騰訊正式宣布成立技術委員會&#xff0c;計劃在未來發力內部代碼的開源和協同&#xff0c;投入更多資金和精力在技術建設上。BAT 三家里一直被詬病技術建設落后的騰訊&#xff0c;終于開始補足自己的短板。這會對騰訊自身帶來什么&#xff1f;又…

2020 前端技術發展回顧

大家好&#xff0c;我是若川&#xff0c;今天給大家分享一篇來自阿里媽媽前端快爆的好文。另外&#xff0c;偷偷告訴你&#xff0c;截止今晚9點 點此抽獎送紅包還送3本比紅寶書還貴的書可以點擊文章末尾閱讀原文直達知乎鏈接&#xff0c;以下是正文2020 終究是一個不平凡的一年…

php驗證碼函數 使用imagestring() imagefttext()設置字體大小

轉載路徑&#xff1a;http://hi.baidu.com/asdasd_cn/item/62977d1e26ca36e85e53b142 生成驗證碼圖片的兩個函數 第一個是用imagestring bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col ) imagestring() 用 col …

提取地圖中道路_非機器學習方法·從遙感影像中提取道路

本科低年級曾經做過一個提取道路線的題目。提供的數據&#xff1a;老師給我們了一幅學校周邊地區的影像&#xff0c;包括RGBInfrared四個波段。一開始使用的方法&#xff1a;當時尚青澀的我和小伙伴們一起使用KMEANS、閾值分割等等方法試圖將那道路從影像中分離出來。遇到的問題…

圖片尺寸自適應

圖片尺寸自適應 οnlοad"javascript:if(this.height>this.width){this.height100}else{this.width100} 轉載于:https://www.cnblogs.com/TangZhongxin/archive/2009/12/14/3942483.html