簡體   English   中英

針對大量出站HTTP請求優化Node.js?

[英]Optimizing Node.js for a large number of outbound HTTP requests?

我的node.js服務器遇到緩慢或無響應的時間,甚至偶爾會在嘗試連接到服務器時導致503網關超時。

我99%肯定(基於我已經運行的測試),這種滯后特別來自我使用node-oauth模塊聯系外部API(Facebook,Twitter和許多其他人)的大量出站請求。 無可否認,正在進行的出站請求數量相對較大(每分鍾大約30個左右)。 更糟糕的是,這經常意味着對我的服務器的相應入站請求可能需要大約5-10秒才能完成。 但是,我有一個以前用於PHP編寫的API版本,它能夠處理這一數量的出站請求而沒有任何問題。 實際上,使用我的Node.js API的相同數量(甚至更少)請求的CPU使用率大約是我的PHP API的5倍。

所以,我試圖找出可以改進的地方,最重要的是要確保不會發生503超時。 以下是我讀過或試驗過的一些內容:

  • 本文(由LinkedIn)建議關閉套接字池。 但是,當我聯系流行的nodejs-request模塊的作者時 ,他的回答是這是一個非常糟糕的主意。
  • 我聽說過將“http.globalAgent.maxSockets”設置為大量可能有所幫助,事實上它似乎確實減少了我的瓶頸

我可以繼續,但簡而言之,我已經能夠找到關於如何優化性能的確切信息,因此這些出站連接不會滯后於來自客戶端的入站請求。

提前感謝任何想法或貢獻。

FWIW,我也使用express和mongoose,我的服務器托管在Amazon Cloud上(2x M1.Large用於節點服務器,2x負載平衡器和3x M1.Small MongoDB實例)。

在我看來,代理正在將您的請求限制為每個主機的默認級別為5。 你的測試表明,啟動代理的maxSockets有助於......你應該這樣做。

您可以通過啟動數據包嗅探器或向應用程序添加更多調試代碼來證明這是問題,以表明這是限制因素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM