博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
centos 7上nginx+uwsgi 性能调优
阅读量:4624 次
发布时间:2019-06-09

本文共 2516 字,大约阅读时间需要 8 分钟。

上一章将 +uwsgi搭建起来,将挂载后面。但是发现一个问题,如果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 -n 100000 -c 100 -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 -n 100000 -c 200 -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里影响处理的配置。

  

user nginx;worker_processes  xx;  #可以设置成cpu个数,体验较佳的性能error_log  /var/log/nginx/error.log;pid        /var/run/nginx.pid;worker_rlimit_nofile 65535; # 最大打开文件数,这个值需要<= worker_connectionsevents {  worker_connections 65535;  # 最大连接数,这个值依赖系统的配置。}

     

  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 -n 100000 -c 10000 -H "User-Agent: python-keystoneclient" -H "Accept: application/json" -H "X-Auth-Token: 65e194"  http://keystonehost:35357/v2.0/

压测报告:

Server Software: nginx/1.8.1Server Hostname: keystonehostServer Port: 35357Document Path: /v2/Document Length: 450 bytesConcurrency Level: 15000Time taken for tests: 30.136 secondsComplete requests: 100000Failed requests: 0Write errors: 0Total transferred: 72900000 bytesHTML transferred: 45000000 bytesTime per request: 4520.417 [ms] (mean)Transfer rate: 2362.33 [Kbytes/sec] received

  

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

 压测报告:

  

Server Software:Server Hostname: keystonehostServer Port: 35357Document Path: /v2/Document Length: 450 bytesConcurrency Level: 10000Time taken for tests: 100.005 secondsComplete requests: 100000Failed requests: 0Write errors: 0Total transferred: 70800000 bytesHTML transferred: 45000000 bytesTime per request: 10000.507 [ms] (mean)Transfer rate: 691.37 [Kbytes/sec] received

 

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

 

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

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

转载于:https://www.cnblogs.com/pythonClub/p/10383887.html

你可能感兴趣的文章
“模态”对话框和“后退”按钮
查看>>
关于javascript实现的网站页面侧边悬浮框"抖动"问题
查看>>
linux_命令格式和命令提示符
查看>>
Cocos2d-X-3.0之后的版本的环境搭建
查看>>
when case group by 的用法集合
查看>>
洛谷P1908 逆序对
查看>>
转义符
查看>>
poj 1019
查看>>
asp.net mvc上传文件
查看>>
bitmq集群高可用测试
查看>>
主成分分析(PCA)原理详解
查看>>
短信验证接口网址
查看>>
Geohash距离估算
查看>>
Demon_背包系统(实现装备栏,背包栏,可以切换装备)
查看>>
记录:一次数据库被恶意修改配置文件的问题
查看>>
redis 持久化
查看>>
解决Jupyter notebook[import tensorflow as tf]报错
查看>>
Windows平台下使用ffmpeg和segmenter实现m3u8直播点播
查看>>
python网络画图——networkX
查看>>
ubuntu16.04文件形式安装mongodb
查看>>