2016-10-20 60 views
0

我使用清漆4 + nginx + ELB。當我運行varnishlog我不斷看到新的會話,如以下每2秒:清漆+ ELB公開會議

* <<Session>> 65622  
- Begin   sess 0 HTTP/1 
- SessOpen  10.90.148.245 16560 :80 10.13.12.136 80 1476955364.127661 17 
- SessClose  RX_TIMEOUT 5.005 
- End  

當我刪除清漆服務器從ELB我沒有看到這些會話。 這些會話來自哪裏? (ELB健康檢查間隔爲300秒)

我在調查爲什麼ELB在幾天後踢掉實例後發現此問題。

+0

奇怪的是,你的會議沒有做任何事情。日誌意味着'10.90.148.245'在你的清漆上打開一個HTTP/1.0會話。然後什麼都不做,會話最終會在關閉時關閉。你的ELB是10.90.148.245嗎? –

+0

有來自兩個IP的會話。上面這個和這一個:10.104.144.137。他們不是ELB的IP地址。 – guyyug

+0

出於好奇,您如何在ec2服務器中尋找這些會話(當清漆不是後端時)。如果你看看http日誌,你將不會看到它們,因爲沒有請求完成... –

回答

2

它們不是ELB的IP地址。

確定嗎?

ELB中的每個節點 - 通常在低流量環境中有兩個或三個節點 - 有兩個IP地址,一個公共地址和一個私有地址。

在EC2控制檯的Network & Security> Network Interfaces下找到有問題的IP地址。您應該找到設置爲amazon-elb的「附件所有者」,並將「描述」設置爲平衡器的名稱。

如果它真的不是你的ELB,那麼這應該告訴你它是什麼。

如果它是您的ELB,那麼這些幾乎可以肯定是ELB爲了性能原因而試圖向您的實例公開的「備用」連接 - 以避免在下一個客戶端請求時等待建立新連接到達。

您的清漆設置正在關閉它們,因此ELB會再次嘗試。

您應該可以將increase the req_timeout設置爲大於ELB的閒置超時(默認60秒),這會導致您看到的這些數量會少很多。

如果Varnish(或任何其他Web服務器)直接暴露於Internet,因爲您不希望隨機瀏覽器捆綁資源......但對於HTTP/S中的ELB不是TCP)模式,ELB負責管理來自瀏覽器的空閒持久連接,而不需要每個連接都與您的實例連接,並且ELB正面和背面的連接之間沒有1:1的關聯。

+0

謝謝你。我改變了timeout_idle,現在我每60秒看到一次這個日誌。也許你可以解釋這一點:http://stackoverflow.com/questions/40200938/varnish-nginx-elb-499-responses – guyyug