我們在windows server 2012上部署了一個簡單的express節點服務器,它只接收3個參數的GET請求。它對這些參數做了一些小的處理,有一個非常簡單的內存節點緩存用於緩存這些參數組合中的一些,與外部許可證服務器的接口爲請求用戶提取許可證並將其設置在cookie中,隨後是,它通過負載平衡器(使用zmq運行)與一些工作人員進行交互,以下載一些大文件(分塊,解壓並提取它們,將它們寫入某些目錄)並將其顯示給用戶。在部署這些文件時,還會啓動對工作人員的其他調用。簡單消息傳遞Nodejs服務器一次只接受4個請求
節點服務器不會與任何數據庫或磁盤進行通信。它只是等待運行在其他機器上的負載平衡器的響應(這些是長時間的操作,通常需要2-3分鐘才能發送響應)。因此,本質上,計算和數據庫交互發生在其他機器上。節點服務器只是一個簡單的消息傳遞/握手服務器,它等待事件處理程序中的響應,啓動其他請求並呈現響應。
我們目前沒有使用'cluster'模塊或nginx。使用裸機節點服務器,是否可以同時接受和處理至少16個請求?諸如這些http://adrianmejia.com/blog/2016/03/23/how-to-scale-a-nodejs-app-based-on-number-of-users/的頁面提到一個簡單的節點服務器一次只能處理2-9個請求。但是,即使我們的裸骨執行,一次也不會超過4個請求。
即使對於這種情況,是使用羣集模塊還是nginx?如何爲幾百個用戶擴展此應用程序?
如果一次只接受4個以上的請求,聽起來好像您的應用程序正在運行某種強加的限制(如連接池沒有連接並等待連接釋放)。你的故事中有太多的移動部分來查明罪魁禍首,但是首先刪除你的請求處理程序的一部分,以查看哪一個可能會導致該塊(另外,鏈接到的博客文章並沒有說明單個節點服務器一次只能處理2-9個請求)。 – robertklep