我正在尝试将工作人员群集分配到最大值10,并且仅在工作负载增加时。可以吗?
我尝试过使用strong-cluster-control's setSize,但是我找不到一种简单的自动分叉方式(例如,如果有许多请求正在进行分叉),或者关闭/“自杀”分叉(可能是timeOut如果没有做任何事情,比如this answer)
This is my repo's main file at GitHub
提前谢谢!!
答案 0 :(得分:0)
我认为你已经对如何扩展负载有了一些了解,所以我不会包含有关它的详细信息,而是专注于此所需的进程间通信。
要向主人发送任意数据,您可以使用工作人员的process.send()。我会采取的方式可能就是这些步骤:
request
process.send()
条消息
request
事件request
事件的数量超过预定义的阈值(即> 100个请求/秒),则会产生新的工作人员request
事件的数量减少到预定义的阈值以下,它会要求其中一个工作人员停止处理新请求并正常关闭(注意它不应该简单地终止进程以避免中断正在进行的请求)< / LI>
醇>
要点是:不要专注于时间 - 关注率。在一个应该每秒处理数十到数千个请求的应用程序中,setTimout()
(如果它已经空闲太长时间可能会杀死该工作人员的任务)永远不会触发,因为{{3}在你的工人之间 - 你可以从一个工人开始,但是一旦达到最大值,即使每秒只有一个请求,你也不会在连续负载下再次降到一个工人。
应该注意的是,产生更多的工作人员比你拥有的CPU核心数量更适得其反。但是,从单个工作人员开始,随着负载的增加逐渐增加所有核心的数量,这可能是有益的。