小心別讓日子把你給混了

          光榮在于平淡...艱巨在于漫長(zhǎng)...
          posts - 26, comments - 7, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          HTTP Keep-Alive
          Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(shí),Keep-Alive功能避免了建立或者重新建立連接。市場(chǎng)上的大部分Web服務(wù)器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。對(duì)于提供靜態(tài)內(nèi)容的網(wǎng)站來(lái)說,這個(gè)功能通常很有用。但是,對(duì)于負(fù)擔(dān)較重的網(wǎng)站來(lái)說,這里存在另外一個(gè)問題:雖然為客戶保留打開的連接有一定的好處,但它同樣影響了性能,因?yàn)樵谔幚頃和F陂g,本來(lái)可以釋放的資源仍舊被占用。當(dāng)Web服務(wù)器和應(yīng)用服務(wù)器在同一臺(tái)機(jī)器上運(yùn)行時(shí),Keep-Alive功能對(duì)資源利用的影響尤其突出。

          為什么有些apache服務(wù)器,負(fù)載很高,把Keep-Alive關(guān)掉負(fù)載就減輕了呢?
          apache 有兩種工作模式,prefork和worker。apache 1.x只有,prefork。
          prefork比較典型,就是個(gè)進(jìn)程池,每次創(chuàng)建一批進(jìn)程,還有apache是基于select實(shí)現(xiàn)的。在用戶不是太多的時(shí)候,長(zhǎng)連接還是很有用的,可以節(jié)約分組,提升響應(yīng)速度,但是一旦超出某個(gè)平衡點(diǎn),由于為了保持很多長(zhǎng)連接,創(chuàng)建了太多的進(jìn)程,導(dǎo)致系統(tǒng)不堪重負(fù),內(nèi)存不夠了,開始換入換出,cpu也被很多進(jìn)程吃光了,load上去了。這種情況下,對(duì)apache來(lái)說,每次請(qǐng)求重新建立連接要比保持這么多長(zhǎng)連接和進(jìn)程更劃算。

          --------------------------------------------------------

          KeepAliveTime 值控制 TCP/IP 嘗試驗(yàn)證空閑連接是否完好的頻率。如果這段時(shí)間內(nèi)沒有活動(dòng),則會(huì)發(fā)送保持活動(dòng)信號(hào)。如果網(wǎng)絡(luò)工作正常,而且接收方是活動(dòng)的,它就會(huì)響應(yīng)。如果需要對(duì)丟失接收方敏感,換句話說,需要更快地發(fā)現(xiàn)丟失了接收方,請(qǐng)考慮減小這個(gè)值。如果長(zhǎng)期不活動(dòng)的空閑連接出現(xiàn)次數(shù)較多,而丟失接收方的情況出現(xiàn)較少,您可能會(huì)要提高該值以減少開銷。缺省情況下,如果空閑連接 7200000 毫秒(2 小時(shí))內(nèi)沒有活動(dòng),Windows 就發(fā)送保持活動(dòng)的消息。通常,1800000 毫秒是首選值,從而一半的已關(guān)閉連接會(huì)在 30 分鐘內(nèi)被檢測(cè)到。 KeepAliveInterval 值定義了如果未從接收方收到保持活動(dòng)消息的響應(yīng),TCP/IP 重復(fù)發(fā)送保持活動(dòng)信號(hào)的頻率。當(dāng)連續(xù)發(fā)送保持活動(dòng)信號(hào)、但未收到響應(yīng)的次數(shù)超出 TcpMaxDataRetransmissions 的值時(shí),會(huì)放棄該連接。如果期望較長(zhǎng)的響應(yīng)時(shí)間,您可能需要提高該值以減少開銷。如果需要減少花在驗(yàn)證接收方是否已丟失上的時(shí)間,請(qǐng)考慮減小該值或 TcpMaxDataRetransmissions 值。缺省情況下,在未收到響應(yīng)而重新發(fā)送保持活動(dòng)的消息之前,Windows 會(huì)等待 1000 毫秒(1 秒)。 KeepAliveTime 根據(jù)你的需要設(shè)置就行,比如10分鐘,注意要轉(zhuǎn)換成MS。 XXX代表這個(gè)間隔值得大小。


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 通渭县| 秭归县| 江华| 莆田市| 奉化市| 衡水市| 潮安县| 探索| 闸北区| 江西省| 江津市| 敦煌市| 白朗县| 民勤县| 壤塘县| 巴青县| 醴陵市| 常宁市| 桂阳县| 枝江市| 庐江县| 巴楚县| 贵州省| 萍乡市| 湾仔区| 宣城市| 通州市| 大方县| 榆社县| 平度市| 黔南| 汪清县| 洛宁县| 甘泉县| 广灵县| 灵璧县| 松阳县| 永城市| 开封市| 莱芜市| 台前县|