2017-08-17 112 views
3

我有一臺服務器,我正在創建(一個消息服務),我正在做一些初步測試來進行基準測試。到目前爲止,處理數據的最快方式是直接在用戶進程上使用並使用工作池。我測試過產卵,這是令人難以置信的緩慢。您是否需要在Erlang中使用工作區池?

該測試只是連接10k用戶,並且每個用戶同時發送15kb數據(或者嘗試太多)並讓服務器處理數據(總長度,標題和有效負載) 。

我有工作池的問題是它的唯一快速,當你有足夠的工人來抵消連接的數量。例如,如果您擁有500k或100萬用戶,則需要更多的工作人員來處理所有進入的併發數據。而對於我的測試,有1000名工作人員將使其無法使用。

所以我的問題如下:什麼時候使用工作人員池是有意義的?會不會有一個臨界點,我不得不使用工作人員來處理數據以釋放用戶進程?多少工人太多了,是多少50萬?

而且,如果員工是要走的路(對於那些龐大的併發分佈式服務器),我猜你可以根據需要動態創建/刪除?

任何文學也讚賞!

感謝您的回答!

回答

2

也許工作人員池不是您的問題的最佳工具。如果我是你,我會嘗試使用Jay Nelson的epocxy,它給你一個非常基本的背壓機制,同時讓你平行任務。從該庫中,我將檢查併發fount或併發控制工具。

+0

我還沒有切換到這些,但當我在erlang服務器上同時連接15-30k +用戶時,我遇到了問題。對於正在進行爆破的客戶,我得到{錯誤,關閉}(很可能是因爲握手緩慢)。我應該避開ssl_accept,然後推出自己的? – Mike5050

相關問題