李成笔记网

专注域名、站长SEO知识分享与实战技巧

别再乱搭Python Web服务器了!Gunicorn真的太厉害了

上线3分钟CPU飙到100%,老板群里的质问还在刷屏,有人已经用一条指令把崩溃的Flask救活了。

那天运维小哥把日志甩过来,满屏都是500,用户群里骂声一片。

问题卡在Python自带的开发服务器,单进程扛不住两百并发,内存像漏水一样掉。

Gunicorn就是这个时候被捞出来的。

它不是新玩具,GitHub上标星已破9k,只是很多人不知道它有多稳。

一条pip装好,终端里敲

gunicorn -w 4 -b 0.0.0.0:8000 app:app

四个进程同时起跑,CPU曲线立刻从天花板回到地板。

Django也能用,命令换成

gunicorn mysite.wsgi:application

settings.py里把DEBUG关掉,性能还能再提三成。

有人担心进程数怎么给。

经验值是CPU核数×2+1,四核机器直接写9。

真想再保险,装个htop看着跑,负载不超过核数就行。

日志别省。

--access-logfile /var/log/gunicorn/access.log

--error-logfile /var/log/gunicorn/error.log

出问题时翻一眼,比猜代码快十倍。

配置写到单独文件更清爽。建一个gunicorn.conf.py,里面写三行

bind = "0.0.0.0:8000"

workers = 9

loglevel = "info"

启动时只带-c,后面再也不用敲长串。

静态文件交给Nginx。80端口给它,Gunicorn躲在8000。Nginx配置里加两行

location /static/ { root /var/www/app; }

location / { proxy_pass http://127.0.0.1:8000; }

重启后,静态资源直接由Nginx吐,Gunicorn专心跑业务,CPU又降一半。

有人踩坑端口被占,netstat -tlnp看一眼,改个数字立刻复活。依赖缺包就pip install -r requirements.txt,一条命令的事。

线上最怕半夜挂。supervisor再包一层,进程掉了自动拉,第二天老板再也不会凌晨打电话。

看完就能动手。把开发服务器换掉,十分钟搞定,剩下的时间安心写功能。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言