Scalability

我需要 nodejs 和 mongodb 每秒處理 5000 個請求

  • March 30, 2016

正如標題所暗示的,我需要 nodejs 和 mongodb 每秒處理 5000 個請求。馬上就是這樣。我們最終會成長很多倍。

我最初的想法是將每台機器放在單獨的機器上,但我不確定我應該從小型機器開始並準備很快向外擴展,還是從更大的機器開始並稍後向外擴展。

無論哪種方式,我完全希望最終將這兩個擴展,但我想知道高檔觸發器會是什麼。我會根據 CPU 或記憶體使用情況進行擴展嗎?如果在 CPU 上,我應該嘗試將平均 CPU 使用率保持在什麼水平?

哦,是的,我將從 10gen 購買支持,以便他們可以查看我的文件模型並確保我以最有效的方式儲存數據。

“一般來說”,沒有你應該讓你的 CPU 低於的數字。如果您有一個四核系統,並且您的應用程序在平均負載為 12 的情況下執行良好,那麼您將獲得更多動力。你真的需要自己測試和確定這些事情。CPU 負載平均值反映的不僅僅是 CPU 正在做什麼。

我將把客戶端渲染、並行性、記憶體、nginx 等基本性能調整留給你的Google搜尋技能,然後跳到一些獨家的,

1. 禁用 Nagle 算法: 如果您完全熟悉實時網路程式,您會認為該算法是一種常見的套接字調整。這使得每個響應更快地離開伺服器。

可以通過 node.js API 進行調整socket.setNoDelay,該 API 設置在每個長輪詢 COMET 連接的套接字上。

**2. Mongodb 連接池:**創建新的經過身份驗證的數據庫連接是昂貴的。因此,您不想為對數據庫的每個請求創建和銷毀連接,而是希望盡可能多地重用現有連接。

您可以在 airpair 或 medium 上找到許多其他性能調整,但在您的情況下,這兩個會影響最大。

**注意:**您的部署拓撲和負載平衡策略也會產生真正的影響。我想說,在你的節點伺服器前面使用 NGINX 作為 RP,讓它處理你的多個節點實例之間的所有負載平衡!

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