2017-08-17 109 views
3

我有一台服务器,我正在创建(一个消息服务),我正在做一些初步测试来进行基准测试。到目前为止,处理数据的最快方式是直接在用户进程上使用并使用工作池。我测试过产卵,这是令人难以置信的缓慢。您是否需要在Erlang中使用工作区池?

该测试只是连接10k用户,并且每个用户同时发送15kb数据(或者尝试太多)并让服务器处理数据(总长度,标题和有效负载) 。

我有工作池的问题是它的唯一快速,当你有足够的工人来抵消连接的数量。例如,如果您拥有500k或100万用户,则需要更多的工作人员来处理所有进入的并发数据。而对于我的测试,有1000名工作人员将使其无法使用。

所以我的问题如下:什么时候使用工作人员池是有意义的?会不会有一个临界点,我不得不使用工作人员来处理数据以释放用户进程?多少工人太多了,是多少50万?

而且,如果员工是要走的路(对于那些庞大的并发分布式服务器),我猜你可以根据需要动态创建/删除?

任何文学也赞赏!

感谢您的回答!

回答

2

也许工作人员池不是您的问题的最佳工具。如果我是你,我会尝试使用Jay Nelson的epocxy,它给你一个非常基本的背压机制,同时让你平行任务。从该库中,我将检查并发fount或并发控制工具。

+0

我还没有切换到这些,但当我在erlang服务器上同时连接15-30k +用户时,我遇到了问题。对于正在进行爆破的客户,我得到{错误,关闭}(很可能是因为握手缓慢)。我应该避开ssl_accept,然后推出自己的? – Mike5050

相关问题