原 Nginx网络架构实战学习笔记(七):nginx性能优化小总结
压力测试:
模拟 前0-10万是热数据,
10-20万是冷门数据
请求热数据 0-10,请求9次
请求准予数据 请求1次, -----100万次的请求.
优化思路:
nginx响应请求
1:建立socket连接
2: 打开文件,并沿socket返回.
排查问题,也要注意观察这两点,
主要从系统的dmesg ,和nginx的error.log来观察
优化过程
1:判断nginx的瓶颈
1.1: 首先把ab测试端的性能提高,使之能高并发的请求.
易出问题: too many open files
原因 : ab在压力测试时,打开的socket过多
解决: ulimit -n 30000 (重启失效)
观察结果: nginx 不需要特殊优化的情况下, 5000个连接,1秒内响应.
满足要求,但 wating状态的连接过多.
1.2: 解决waiting进程过多的问题.
解决办法: keepalive_timeout = 0;
即: 请求结果后,不保留tcp连接.
在高并发的情况下, keepalive会占据大量的socket连接.
结果: waiting状态的连接明显减少.
1.3: 解决服务端 too many open files
分析: nginx要响应,
1是要建立socket连接,
2 是要读本地文件
这两个者限制.

由上图可看出,nginx的问题容易出在2点上:
1: nginx接受的tcp连接多,能否建立起来?
2: nginx响应过程,要打开许多文件 ,能否打开?
第1个问题: 在内核层面(见下)
第2个问题 (见下)
系统内核层面:
net.core.somaxconn = 4096 允许等待中的监听
net.ipv4.tcp_tw_recycle = 1 tcp连接快速回收
net.ipv4.tcp_tw_reuse = 1 tcp连接重用
net.ipv4.tcp_syncookies = 0 不抵御洪水攻击
ulimit -n 30000
Nginx层面:
解决: nginx.conf 下面: work_connection 加大
worker_connections 10240;
Worker_rlimit_nofiles 10000;
Keepalive_timeout 0;
Nginx---->php-fpm之间的优化

如上图,在很多个nginx来访问fpm时, fpm的进程要是不够用, 会生成子进程.
生成子进程需要内核来调度,比较耗时,
如果网站并发比较大,
我们可以用静态方式一次性生成若干子进程,保持在内存中.
方法 – 修改php-fpm.conf
Pm = static 让fpm进程始终保持,不要动态生成
Pm.max_children= 32 始终保持的子进程数量
Php-mysql的优化
Linux机器下 ,php 通过IP连接其他mysql服务器时,容易出的问题
能ping能,但connect不到.

一般是由:mysql服务器的防火墙影响的.
并发1万连接,响应时间过长.
优化思路: 同上的nginx
1: 内核层面,加大连接数,并加快tcp回收
2: mysql层面,增大连接数
3: php层面,用长连接,节省连接数
4: 用memcached缓存,减轻mysql负担
具体:
1.1 , PHP服务器增大 ulimint -n选项
1.2 mysql服务器内核配置
添加或修改如下选项
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 0
syscttl -p 使修改立即生效
2.1 修改mysql.cnf
Vi /etc/my.conf
service mysqld restart 重启mysql
3.1 PHP层面 ,用长连接
Mysql_connect —> mysql_pconnect
注: pconnect 在PHP以apache模块的形式存在时,无效果.
Nginx+phjp+mysql+nginx
在引入memcached后,性能提升不明显,甚至还略有下降
memcached使50%的请求变快了,但是一部分,反倒慢了.
原因在于–PHP->memcached也要建立tcp连接,代价挺高,
但缓存了数据之后,就省去了mysql的查询时间.
总结: memcached适合存复杂的sql,尤其是连接查询/模糊查询的sql结果
Memcached服务器的优化(集中在内核的ipv4设置上,不再重复)
原 Nginx网络架构实战学习笔记(七):nginx性能优化小总结的更多相关文章
- Nginx网络架构实战学习笔记(五):大访问量优化整体思路、ab压力测试及nginx性能统计模块、nginx单机1w并发优化
文章目录 大访问量优化整体思路 ab压力测试及nginx性能统计模块 ab压力测试及nginx性能统计模块 ab压力测试 nginx性能统计模块 nginx单机1w并发优化 整装待发: socket ...
- Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解
文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...
- Nginx网络架构实战学习笔记(二):编译PHP并与nginx整合、安装ecshop、商城url重写实战
文章目录 编译PHP并与nginx整合 安装ecshop(这是一个多年前php的项目貌似,作为java开发的我暂时不去关心) 商城url重写实战 编译PHP并与nginx整合 安装mysql yum ...
- Nginx网络架构实战学习笔记(六):服务器集群搭建、集群性能测试
文章目录 服务器集群搭建 Nginx---->php-fpm之间的优化 302机器 202机器 压力测试 搭建memcached.mysql(数据准备) 今晚就动手-.- 集群性能测试 服务器集 ...
- Nginx网络架构实战学习笔记(四):nginx连接memcached、第三方模块编译及一致性哈希应用
文章目录 nginx连接memcached 第三方模块编译及一致性哈希应用 总结 nginx连接memcached 首先确保nginx能正常连接php location ~ \.php$ { root ...
- Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡
文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...
- 《基于Nginx的中间件架构》学习笔记---4.nginx编译参数详细介绍
通过nginx -V查看编译时参数: 在nginx安装目录下,通过./configure --help,查看对应版本ngnix编译时支持的所有参数: Nginx编译参数详细介绍: --help 显示本 ...
- 七、Nginx学习笔记七Nginx的Web缓存服务
user www; worker_processes 1; error_log /usr/local/nginx/logs/error.log crit; pid /usr/local/nginx/l ...
- 《基于Nginx的中间件架构》学习笔记---3.nginx的目录分析
一.目录分析 用yum的方式进行安装实质上装的都是一个个的rpm包,对于linux系统rpm包管理器,我们使用命令rpm -ql 服务名称 就可以列出我们已经安装的服务所对应安装的每一个文件所在的目 ...
随机推荐
- Java执行static顺序
1.定义: 1. Java中静态变量只能在类主体中定义,不能在方法中定义. 静态变量属于类所有而不属于方法. 2. 静态块:用static申明,JVM加载类时执行,仅执行一次 构造块:类中 ...
- RECT,AngularJS学习网址
RECT 1.http://www.cnblogs.com/y unfeifei/p/4486125.html 2.http://www.ruanyifeng.com/blog/2015/03/rea ...
- java环境搭建与安装开发工具全教程
当前端的后台搭档是做java后台时,这时就需要自己搭建一个java开发环境,和安装eclipse了. 那么,一般这些开发环境在一个开发团队中是统一的.正规完善的公司还会有自己软件库和安装配置文档.这时 ...
- USACO 2014 US Open Odometer /// 数位DP
题目大意: 给定区间 l r 求得区间中有多少个数 数的各个数位里出现最多次的数>=数的长度的一半 如2233 3334 枚举k在数中出现次数在一半以上 那么求出的所有方案数中应该减去 两个数各 ...
- 重读ORB_SLAM之LoopClosing线程难点
1. DetectLoop 这里有个ConsistenGroup概念,比较难懂.这里是最让人迷惑的地方.一旦vbConsistentGroup为真,其他帧的spCanditateGroup就进不来了. ...
- SSM+Maven使用PageHelper插件分页
官方网站: https://pagehelper.github.io/docs/howtouse/#2-%E9%85%8D%E7%BD%AE%E6%8B%A6%E6%88%AA%E5%99%A8%E6 ...
- linux c 链接详解4-共享库
4. 共享库 4.1. 编译.链接.运行 组成共享库的目标文件和一般的目标文件有所不同,在编译时要加-fPIC选项,例如: $ gcc -c -fPIC stack/stack.c stack/pus ...
- Educational Codeforces Round 65 E,F
E. Range Deleting 题意:给出一个序列,定义一个操作f(x,y)为删除序列中所有在[x,y]区间内的数.问能使剩下的数单调不减的操作f(x,y)的方案数是多少. 解法:不会做,思维跟不 ...
- Codeforces 1188C DP 鸽巢原理
题意:定义一个序列的beauty值为序列中元素之差绝对值的最小值,现在给你一个数组,问所有长度为k的子序列的beauty值的和是多少? 思路:(官方题解)我们先解决这个问题的子问题:我们可以求出bea ...
- servlet 实践
基础 当Servlet引擎收到一个请求,它将请求所有的细节汇编到一个HttpServletRequest对象.细节包括请求头部.URI.查询字符串和任意发送的参数等等.类似地,它初始化一个处理响应头部 ...