我目前正在单核计算机上设置Gunicorn应用程序,并且内存有限,所以我宁愿使用1个Worker和8个线程,而不是2个具有4个线程的worker。
但是,我仍然要问自己一个问题,如1号工人配置可能会导致性能问题,如Gunicorn官方文档中所建议使用以下设置。
2 * (number of cores) + 1
考虑到使用Python我会被GIL本地阻止这一事实,如果我想使用线程实现真正的并行性,我仍然看不到使用比内核数量更多的进程的任何兴趣。
答案 0 :(得分:1)
这实际上取决于工作量。
对于CPU密集型任务,您是对的。 对于I / O(网络,存储)密集型任务,即使在单个内核上,您也可以利用许多线程来提高性能。
理论上都是如此,性能瓶颈可能来自意料之外的来源。
我认为最好的做法是根据经验对几种配置进行基准测试,以模拟系统在生产中将面对的工作,并选择产生最佳结果的配置。