解决sqlchemy+gunicorn+nginx+mysql线上环境经常连接超时问题

解决sqlchemy+gunicorn+nginx+mysql线上环境经常连接超时问题

解决sqlchemy+gunicorn+nginx+mysql线上环境经常连接超时问题

最近线上环境经常出现页面timeout,每刷新几次就timeout,真是烦死了。

首先排查日志,先看下supervisor日志
supervisor日志
发现gunicorn经常重启,百度了一下,大概是一个请求30秒内没得到回应,gunicorn就会重启这个进程,不是特别明白哪里出问题了。。

猜想是不是sqlchemy和数据库之间出问题了,然后研究了一下sqlchemy的连接池等配置,也检查了代码是不是没关闭连接,检查完发现没毛病啊。。

然后在代码里加了些输出日志放在测试环境中跑,顺便打开了nginx日志,发现每次timeout时,nginx入口日志检测到了请求过来,但是输出日志并没什么反应,我勒个去。。请求都没走到代码里,难道是nginx配置出问题了?

然后研究了一下nginx的配置,什么event,upstream啥的,也都试了下,并没什么卵用,后来甚至还研究了TIME_WAIT和CLOSE_WAIT啥的,
最后还是把问题定位到nginx到gunicorn这段过程,最后终于在一篇博客中找到了希望,
博客地址:http://san-yun.iteye.com/blog/1890784

博客截图
发现他们启动gunicorn加了-k gevent参数,原来gunicorn默认是用的同步阻塞的网络模型(-k sync),对于大并发的访问可能表现不够好,使用gevent异步模型性能会更好,
试了一下果然没有再出现timeout了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值