正确的uWSGI进程数量?

在一个4芯的盒子上,哪个场景设置得更好:

4 uWSGI用深队列处理请求

8个具有深队列的uWSGI进程

像服务器的内存一样,许多进程允许一个相对较浅的队列?

从历史上看,普遍的看法是,Web服务器的性能(也就是说每个事务处理时间相对较短的高波动率工作负载)比内核数量多得多。 操作系统进程调度程序将使用相当深刻的魔力,而不仅仅是在其可用的处理器中循环大部分CPU密集型进程; 而不是试图对调度器进行第二次猜测,最好的办法是确保你有足够的内存来保持更多的浅队列进程比预期的并发请求负载活着,并让调度器处理如何让他们在及时。

答案是它取决于你正在服务的应用程序,特别是运行时。

如果您使用的是Python或Ruby,那么您可能需要每个逻辑核心都有一个进程 – 除非您的应用程序使用了很多能够使用多个核心的本机代码。

如果您使用的是Go或者其他能够在多核上同时运行代码的语言,那么您只需要一个进程。

至于是否需要一个深层或浅层的队列(套接字侦听队列长度),至less要和进程数×线程数一样长,取决于uWSGI前面的内容。