Gunicorn和gevent没有使用我告诉它的资源。当我告诉Gunicorn使用一名工人时,它会使用一名工人并最大化一个核心。如果我告诉它使用4个工作程序,它将在4个不同的工作程序中分布一个核心。我希望一个工人有一个CPU。当我使用--threads
选项时,同样的问题。
我有一个NER引擎,可以为模型加载x MB的GPU内存。现在,我想最大限度地增加对该服务的请求数量。截至目前,我最好的结果是使用gunicorn -t 120 -w 4 -k gevent --threads 12 -b 0.0.0.0:8980 script:app
,每分钟的请求量约为2.1万。
在检查资源使用情况时,按预期,在加载模型时似乎使用了很多资源。但是当实际调用该API时,它似乎根本用不完。
我想增加吞吐量。增加线程和工作程序的数量似乎无关紧要。
P.s我正在动力机器上运行,因此资源没有问题。
另一方面,最好的办法是让一个工作人员实际加载模型,然后再由几个工作人员使用该模型。当前的主要问题之一是,当我有+12个工作程序时,我的GPU内存用完了,因为每个工作程序都必须在GPU内存中加载模型。有什么办法吗?如果我理解gevent
是正确的,应该解决这个问题吗?
预先感谢
更新 只是注意到古尼康什么也没做。在没有开枪的情况下运行该服务,我得到的结果是相同的。我究竟做错了什么?