gunicorn+gevent+django+PostgreSQL下的数据库连接情况

最近写一个项目,边进行代码编写,边阅读django的源码,有些疑问:

首先设置如下场景:

  • 以gunicorn作为部署服务器,worker class使用gevent,worker数量为4
  • gunicorn的max requests参数设为100
  • django使用psycopg2的backend作为数据库驱动代理
  • 使用psycogreen来patch psycopg2,使之能够支持gevent的协程
  • Django使用1.6以上的版本

问题如下:

  1. 在上述gunicorn的配置下,应该有4个python进程处理request,每个进程下是否都是为每一个request分配一个gevent协程来处理?
  2. 如果上一问中的答案为,那么是否每一个协程都会创建一个连接?比如:参考上面的配置,假如某个进程现在有40个请求待处理,那么它将创建40个协程,同时每个协程创建一个数据库连接,也就是40个连接(不一定同时创建,考虑到各个请求的处理时间长度不一样)?
  3. Django 1.6引入的CONN_MAX_AGE这个数据库配置的参数如何影响上一问中的数据库连接创建的情况?

希望有熟悉情况的哥们能够回答一下。

阅读 6.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题