Nginx

varnish vcl 中的 .max_connections 參數是什麼以及如何為後端 nginx 伺服器計算此值

  • August 10, 2020

我在 varnish default.vcl 中看到了 .max_connections 參數,並通過在 web 中搜尋,找到了 .max_connections 下面的 文章:您授權 Varnish 打開到此後端的連接數。請記住,連接是池化和重用的,因此無論如何您的後端應該有一個更輕鬆的生活,但有時,您需要更多地保護它。但要小心,因為這是一個硬限制,如果達到,Varnish 不會使用這個後端,即使這意味著向使用者返回錯誤。

現在,我想知道最大連接是否意味著請求/秒或併髮使用者或其他任何東西。我將如何為後端 nginx 伺服器計算它?

需要多個後端連接

HTTP/1.1單個連接上沒有請求多路復用。如果同時有多個 Varnish 請求,對於未儲存在記憶體中的資源,可能會打開多個後端連接。

Varnish 將保持對後端的連接打開,並將它們重新用於其他請求。Varnish 還將對同一資源執行請求合併和折疊後端請求。

話雖如此,仍然存在 Varnish 需要打開多個連接到單個後端的情況。

限制後端連接

根據您的平台獲得的流量、記憶體的命中率以及後端伺服器擁有的資源,您可能希望限制與後端的連接。

使用 Varnish 的想法是避免與原始伺服器的過多連接。通過max_connections在後端定義中引入,您可以保護您的來源免受 Varnish 中的過度重新驗證。

如果你的命中率不錯,你永遠不會達到這個限制,但如果你這樣做,max_connections將確保獲取排隊,直到連接被釋放。

計算max_connections

max_connections是否可以防止您的伺服器記憶體不足

您要選擇的值取決於您的源伺服器擁有的資源量,以及滿足請求所需的平均時間。

ab您可以使用or執行負載測試,siege並確定您的源在進入高負載之前可以處理多少個同時連接。

請確保keepalive在這些測試期間關閉

這是非常反複試驗。確保您的初始max_connections值太高,發送足夠的流量,並尋找臨界點。

降低 的值max_connections,沖洗,重複。

一旦確定了max_connections源的設置,請將其保存在源(Apache 或 Nginx)的網路伺服器配置中。

最終,您還將在 Varnish 後端定義中設置該值。

這個想法是 Varnish 不應該允許更多的同時連接到您的後端伺服器,而不是它們被配置為處理的。

引用自:https://serverfault.com/questions/1029538