如何解决bokeh负载平衡策略中的--num-procs选项
在文档中,它建议在底层Tornado服务器中完成分叉,尽管我试图弄清楚如果存在多个进程,则负载平衡策略是什么。 假设有3个进程在运行(使用bokeh serve --num-procs 3),那么是否有3个请求仅定向到其中一个,而其他两个进程仍然相当闲置?
解决方法
假设Bokeh并没有做任何特别的事情,而只是使用Tornado的多进程模式,则没有任何东西可以保证负载在各个进程之间得到平衡,并且可能会出现严重的不平衡。这包括让所有3个连接进入一个进程,而另两个保持空闲。随着流量的增加,这种100/0分配的可能性越来越小,但是最繁忙的进程的连接数至少是最不繁忙的连接数是很常见的。
这里没有真正的“负载平衡策略”-当建立连接时,内核将唤醒所有三个进程,而执行其accept
系统调用的任何一个首先获得连接。通常,这意味着已经有一个请求的进程会收到下一个请求,因为它已经被调度和缓存了(另一方面,有时该进程正忙于处理上一个请求,因此不能立即接受新的请求)。 / p>
我听说SO_REUSEPORT
选项可以改善这一点,但我自己尚未对此进行验证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。