linux下nginx+uwsgi性能调优

最近使用flask来重写之前的一些php项目,但是部署到生产环境上经常出现502,于是乎打算收集下资料进行调优,下面我们来看看具体哪些方面需要进行改进

nginx优化,主要是nginx.conf文件内

user  www www;
worker_processes  56; #CPU逻辑个数,根据你的服务器来
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid        logs/nginx.pid;
worker_rlimit_nofile 65535; #最大打开文件数,这个值要小于等于worker_connections
events {
    worker_connections  65535; #最大连接数
    multi_accept on; 
    use epoll; 
}

接下来我们看看系统调优的地方,主要是syctl.conf

net.core.somaxconn = 2048 #系统队列最大的监听长度
vm.swappiness = 10 #物理内存剩下10%时使用虚拟内存

开辟新的虚拟内存可以参考之前做的swapfile文件的创建和挂载

接下来我们看看uwsgi的优化,我的文件就是uwsgi.ini

workers = 56  # 并发处理进程数
listen = 65535 # 并发的socket连接数,优化需要根据系统配置
processes = 56 #进程数,根据根据逻辑CPU个数修改
threads = 128 #线程数,酌情修改

由于经常遇到而已访问导致的队列堵塞,我们可以在nginx.conf做下适当的限制

limit_req_status 599; #定义被限制的返回码,便于和正常的区分
    limit_req_zone $binary_remote_addr zone=allips:2m rate=100r/s; #nginx每秒仅接受100个请求
    geo $limited { #设定不受限制的IP
        default 1;        182.92.117.23 0;
    }

上面限速以后还需要处理下等待请求数

location / {
        ...
        limit_req zone=allips burst=60 nodelay; #达到限速后,允许等待的请求数
}


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://sulao.cn/post/654.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。