我有4 machine learning models
尺寸2GB
每个,即 8GB
总共。我收到关于 100 requests
的请求一次。每个请求大约需要 1sec
.
我有一台机器有 15GB RAM
。现在如果我增加 number of workers
在 Gunicorn 中,总内存消耗很高。所以我不能将 worker 数量增加到超过 2 人。
所以我对此有几个问题:
- worker 如何能够
share models or memory
它们之间? - 哪种类型的员工适合,
sync or async
考虑到上述情况? - 如何使用
preload
Gunicorn
中的选项如果它是一个解决方案?我用过它,但没有任何帮助。也许我的做法是错误的。
这是我正在使用的 Flask 代码
https://github.com/rathee/learnNshare/blob/master/agent_api.py
最佳答案
使用 gevent 工作线程(或其他事件循环工作线程),而不是默认工作线程。默认同步工作进程为每个工作进程处理一个请求。只要每个请求都是非阻塞的,异步工作线程就可以处理每个工作进程无限数量的请求。
gunicorn -k gevent myapp:app
可以预见的是,您需要为此安装 gevent:pip install gevent
。
关于concurrency - 如何使用 Flask 和 Gunicorn 获得 1000 个请求的并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35914587/