centos 7上nginx+uwsgi 性能调优
上一章将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 -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_connections
- events {
- 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.1
- Server Hostname: keystonehost
- Server Port: 35357
- Document Path: /v2/
- Document Length: 450 bytes
- Concurrency Level: 15000
- Time taken for tests: 30.136 seconds
- Complete requests: 100000
- Failed requests: 0
- Write errors: 0
- Total transferred: 72900000 bytes
- HTML transferred: 45000000 bytes
- Time per request: 4520.417 [ms] (mean)
- Transfer rate: 2362.33 [Kbytes/sec] received
这个时候切换到keystone自身服务openstack-keystone。并发为1000时。
压测报告:
- Server Software:
- Server Hostname: keystonehost
- Server Port: 35357
- Document Path: /v2/
- Document Length: 450 bytes
- Concurrency Level: 10000
- Time taken for tests: 100.005 seconds
- Complete requests: 100000
- Failed requests: 0
- Write errors: 0
- Total transferred: 70800000 bytes
- HTML transferred: 45000000 bytes
- Time per request: 10000.507 [ms] (mean)
- Transfer rate: 691.37 [Kbytes/sec] received
可以看出,openstack-keystone服务到并发为1000时,api服务已经到极限了。
所以nginx+uswgi 经过调优后,nginx的高性能立即体现出来。
大家要是还有更好的调优方式,欢迎大家贴出来一起学习哈。
centos 7上nginx+uwsgi 性能调优的更多相关文章
- Nginx + Linux 性能调优
Nginx以高性能负载均衡.缓存和web服务器出名,支撑着世界上繁忙网站中的40%.大多数使用场景下,Nginx和Linux系统的默认配置表现较好,但是仍有必要做一些调优以期达到最佳性能. 这篇文章讨 ...
- Nginx简单性能调优
Nginx默认没有开启利用多核CPU (忍不住吐槽,然怪总感觉服务器性能没充分发挥), 我们可以通过增加worker_cpu_affinity配置参数来充分利用多核CPU.CPU是任务处理,计算最关键 ...
- Java SE和Java EE应用的性能调优
凡事预则立,不预则废,和很多事情一样.Java性能调优的成功.离不开行动计划.方法或策略以及特定的领域背景知识.为了在Java性能调优工作中有所成就.你得超越"花似雾中看"的状态, ...
- Spark SQL概念学习系列之性能调优
不多说,直接上干货! 性能调优 Caching Data In Memory Spark SQL可以通过调用sqlContext.cacheTable("tableName") 或 ...
- Nginx性能调优
[调优]Nginx性能调优 一.Nginx优化配置 1.主配置文件优化:# vi /usr/local/nginx/conf/nginx.conf------------------------- ...
- Nginx 性能调优
原文地址:http://nginx.com/blog/tuning-nginx/ Tuning NGINX for Performance Nginx 性能调优 NGINX is well known ...
- Tomcat+Nginx+Lvs部署方案与性能调优
立项要求:用户登录并发数达到1000vuser.原项目设计没有Nginx和LVS,经过性能测试并发数最高到400,就报响应超时,且系统资源消耗严重.经过和架构师商议决定先加入Nginx解决负载均衡处理 ...
- nginx+keepalived+tomcat之tomcat性能调优
body{ font-family: Nyala; font-size: 10.5pt; line-height: 1.5;}html, body{ color: ; background-color ...
- 小程序组件化框架 WePY 在性能调优上做出的探究
作者:龚澄 导语 性能调优是一个亘古不变的话题,无论是在传统H5上还是小程序中.因为实现机制不同,可能导致传统H5中的某些优化方式在小程序上并不适用.因此必须另开辟蹊径找出适合小程序的调估方式. 本文 ...
随机推荐
- nginx的访问控制
一.基于Basic Auth认证与基于IP的访问控制 一.基于Basic Auth认证 Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后 ...
- dfs模版
dfs #include <stdio.h> #include <string.h> char Map[16][16]; int mv[16][16]; //mv[i][j] ...
- tensorflow mac安装方法
480 pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl 481 ...
- 回归评价指标MSE、RMSE、MAE、R-Squared
分类问题的评价指标是准确率,那么回归算法的评价指标就是MSE,RMSE,MAE.R-Squared. MSE和MAE适用于误差相对明显的时候,大的误差也有比较高的权重,RMSE则是针对误差不是很明显的 ...
- Ajax(django)
Ajax AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaSc ...
- cookie之三天免登录代码
LoginCookie.java 1 package com.bjsxt.cookie; import java.io.IOException; import java.net.URLDecoder; ...
- vue中使用base64和md5
1.在项目根目录下安装 cnpm install --save js-base64 cnpm install --save js-md5 2.在项目文件中引入 import md5 from 'js- ...
- LA 2218 Triathlon(半平面交)
Triathlon [题目链接]Triathlon [题目类型]半平面交 &题解: 做了2道了,感觉好像套路,都是二分答案,判断半平面交是否为空. 还有刘汝佳的代码总是写const +& ...
- RDD、DataFrame、Dataset三者三者之间转换
转化: RDD.DataFrame.Dataset三者有许多共性,有各自适用的场景常常需要在三者之间转换 DataFrame/Dataset转RDD: 这个转换很简单 val rdd1=testDF. ...
- Unity3d之表情动画--眨眼
可通过BlendShape来实现眨眼动画,效果如下: 转载请注明出处:http://www.cnblogs.com/jietian331/p/7054673.html 代码如下: using Unit ...