伺服器配置/500Req/秒的重要參數

伺服器配置/500Req/秒的重要參數

我正在配置一台伺服器作為一個流量非常大的網站的 nginx 伺服器。預計會同時接收來自大量 IP 位址的流量。預計每秒有 500 個請求,至少有 2000 萬個唯一 IP 連線。

我在以前的伺服器中註意到的問題之一與 iptables / ipconntrack 有關。我不知道這種行為,並且很高興知道我應該調整 ubuntu / debian (32/64) 位元機器的哪些參數才能從伺服器獲得最大效能。我可以在伺服器上放置大量 RAM,但關鍵任務是回應時間。理想情況下,我們不希望任何連線掛起/逾時/等待,並且希望總體回應時間盡可能短。

答案1

你真的需要 iptables 嗎?如果您希望從單個盒子中獲得如此多的性能,我建議您完全刪除它。如果您透過刪除除 nginx 之外的所有服務來仔細配置計算機,將 SSH 配置為偵聽非公共介面(VPN、LAN 等),那麼您也許可以在沒有防火牆的情況下逃脫。這至少可以解決你的一個問題。

你想這樣做嗎網路伺服器,或其中幾個?即使是簡單的 DNS 循環也能幫助您將負載分散到幾台不同的電腦。為了可靠性,您肯定還需要多個伺服器。

答案2

這個問題相當廣泛。我給您的最佳建議是退後一步,思考如何擴展您的應用程式。您想要擴展(一些大型伺服器)還是擴充(許多小型伺服器)或可能是組合。一旦確定了擴展策略,您也可以圍繞該策略設計 HA 策略。

我非常懷疑您在網站啟動後是否會看到 20MM 的唯一身份(只是為了給您一些看法,這將使其成為至少排名前 200 的網站)。

制定一個良好的計劃來擴展您的流量,並且不要在伺服器能力的邊緣運行,為自己留出一些峰值空間,並隨著流量的增長添加新設備。

我們時不時會收到這些問題。考慮未來是件好事,但不要計劃擁有能夠立即處理 20MM/60MM/100MM 獨特設備的基礎設施,您會浪費金錢,而且基礎設施大部分都停在那裡閒置的。

現在回答你的問題,我們 Stack Overflow(目前)使用 iptable 並在我們的前端路由器上運行 conntrack 模組,沒有任何問題。我建議發布一個新問題,詳細說明您在負載下運行 iptables/*conntrack* 時遇到的確切問題。

最後是一些好的閱讀

我們如何運行 S[OFU]/Stack Exchange
高可擴展性博客

答案3

如果您所做的只是提供相對較小的靜態文件,那麼每秒 500 個請求實際上並不算多。另一方面,如果它們很大或很複雜(例如基於會話或依賴資料庫),那麼這就是相當大的工作負載。

考慮在此解決方案前面建立一個像 Varnish 這樣的反向代理,設定為使用 malloc 池作為快取。正確調整的 VCL 將允許您在記憶體中緩衝大部分站點,這表示 nginx 只需要提供少數選定的位元。也要確保在檔案系統上設定 noatime。

相關內容