我正在运行带有gevent工人类型的gunicorn和2核心系统上的3工人。 我向服务器发送了大约15个并发请求。 单独运行时,每个请求的平均时间为20秒,但同时运行时,平均时间为30秒。
查看日志中的gunicorn,我可以看到每个请求都由同一个工作人员处理(使用日志中的进程ID进行跟踪)。 这可能是平均时间这么长的可能原因吗?由于相同的过程正在处理所有请求,因此大概存在不变的上下文切换。 如何确保使用所有辅助进程? 我试图增加工人的数量,但这并没有太大帮助。
这是启动gunicorn即服务的配置文件的一部分:
/usr/bin/gunicorn --pid /run/gunicorn/pid --bind unix:/run/gunicorn/socket myapp.wsgi:application -k gevent -w 3 --worker-connections 1000 --access-logfile /var/log/gunicorn/access.log --access-logformat "%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" %(p)s"