加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > CentOS > 正文

centos 7上nginx+uwsgi 性能调优

发布时间:2020-05-22 11:39:26 所属栏目:CentOS 来源:互联网
导读:上一章将nginx +uwsgi搭建起来,将keystone挂载后面。但是发现一个问题,如果http请求达到一定量后,nginx直接返回502。这让需要部署大规模openstack集群的我很是头疼,比较了一下请求的处理能力,keystone 原生的api 接口是可以承受一定量的大规模并发请求的

上一章将nginx +uwsgi搭建起来,将keystone挂载后面。但是发现一个问题,如果http请求达到一定量后,nginx直接返回502。这让需要部署大规模openstack集群的我很是头疼,比较了一下请求的处理能力,keystone 原生的api 接口是可以承受一定量的大规模并发请求的。这就让我思考一个问题,为什么nginx作为web,性能却没有keystone api 自身的承载能力好呢。于是我做了压测,查了一下原因。

服务器配置:24 cpu+200G mem+1T disk

系统:centos 7.1

部署:kesytone nginx+uwsgi


先将keystone部署在nginx+uwsgi 后端

在同机房的另外一台服务器上发起压测:

ab-r-n100000-c100-H"User-Agent:python-keystoneclient"-H"Accept:application/json"-H"X-Auth-Token:65e194"http://keystonehost:35357/v2.0/

发现http处理正常。然后改一下并发数到200.发现大概50%的返回为502。

然后我将keystone-api 却换成keystone 自身的服务openstack-keystone。再次用200并发压测:发现处理正常,没有返回502的。

ab-r-n100000-c200-H"User-Agent:python-keystoneclient"-H"Accept:application/json"-H"X-Auth-Token:65e194"http://keystonehost:35357/v2.0/

大概知道问题应该在nginx和uwsgi上,限制了并发的处理数。

查了nginx uwsgi官方的资料。原来调优有好几个参数,并且系统本身也需要做一些调优

1.首先先看一下nginx.conf里影响处理的配置。

usernginx;
worker_processesxx;#可以设置成cpu个数,体验较佳的性能

error_log/var/log/nginx/error.log;
pid/var/run/nginx.pid;


worker_rlimit_nofile65535;#最大打开文件数,这个值需要<=worker_connections


events{
worker_connections65535;#最大连接数,这个值依赖系统的配置。

}

2.看一下系统的配置sysctl.conf

net.core.somaxconn=2048#定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。默认是128.优化可以根据系统配置做优化

3.uwsgi 的配置优化/etc/uwsgi.d/admin.ini

workers=24#并发处理进程数
listen=65535#并发的socket连接数。默认为100。优化需要根据系统配置

在做优化之前,发现并发数过不了100.原因就是这里,uwsgi 的socket 默认链接为100.

做完调优,在此压测了一下性能,并发为10000时:

ab-r-n100000-c10000-H"User-Agent:python-keystoneclient"-H"Accept:application/json"-H"X-Auth-Token:65e194"http://keystonehost:35357/v2.0/

压测报告:

ServerSoftware:nginx/1.8.1
ServerHostname:keystonehost
ServerPort:35357
DocumentPath:/v2/
DocumentLength:450bytes
ConcurrencyLevel:15000
Timetakenfortests:30.136seconds
Completerequests:100000
Failedrequests:0
Writeerrors:0
Totaltransferred:72900000bytes
HTMLtransferred:45000000bytes

Timeperrequest:4520.417[ms](mean)

Transferrate:2362.33[Kbytes/sec]received

这个时候切换到keystone自身服务openstack-keystone。并发为1000时。

压测报告:

ServerSoftware:
ServerHostname:keystonehost
ServerPort:35357
DocumentPath:/v2/
DocumentLength:450bytes
ConcurrencyLevel:10000
Timetakenfortests:100.005seconds
Completerequests:100000
Failedrequests:0
Writeerrors:0
Totaltransferred:70800000bytes
HTMLtransferred:45000000bytes

Timeperrequest:10000.507[ms](mean)

Transferrate:691.37[Kbytes/sec]received


可以看出,openstack-keystone服务到并发为1000时,api服务已经到极限了。


所以nginx+uswgi 经过调优后,nginx的高性能立即体现出来。

大家要是还有更好的调优方式,欢迎大家贴出来一起学习哈。

本文出自 “nginx上搭建keystone” 博客,请务必保留此出处http://www.jb51.cc/article/p-wtiarbta-st.html

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读