美文网首页
阅读gunicorn源码的几个结论

阅读gunicorn源码的几个结论

作者: everpuck | 来源:发表于2018-12-23 20:02 被阅读0次

gunicorn是一个python Wsgi http server,最近项目服务出现了一些问题,阅读源码的几个提示:

  1. 各种不同的worker里无疑gevent方式是最高效的,每个进来的请求都转变为一个协程去异步的处理;
  2. requests_max参数在设定后,每个worker进程会在处理达到这个参数数量后的请求后会自己结束;
  3. master 管理所有的worker进程,如果当前活跃的进程少于worker_num,master会启动一个新的worker;
  4. 多个worker监听同一个socket,使用select或者epoll模式,据说因为Linux内核2.6后,不会出现“惊雷”现象
  5. gevent的工作worker下,每个worker可以设置最大连接的协程数量(worker_connecttions)
  6. 参数backlog指定了socket监听的最大缓存数目,当请求量积攒的数量大于backlog数值后,服务会丢掉(drop)后来的请求

那么问题是,按照这个理解,不应该在qps峰值为300的请求量下会出现服务拒绝连接的情况啊,可是现实是在开启4个worker(gevent)进程下,使用默认backlog(2000)以及指定requests_max为300的,单个请求平均服务处理时间为1秒多的情况下,还是会出现服务拒绝连接的情况。。。脑壳痛-。-

相关文章

网友评论

      本文标题:阅读gunicorn源码的几个结论

      本文链接:https://www.haomeiwen.com/subject/jmznkqtx.html