nginx 性能优化的概述及在CPU资源方面的处理
nginx的性能优化的概述
软件层面的提升硬件的使用率
增大CPU的利用率
增大内存的利用率
增大磁盘IO利用率
增大网络带宽利用率
提升硬件规格
网卡:万兆网卡、例如10G、25G、40G等
磁盘:固态硬盘,关注IOPS和BPS指标
CPU:更快的主频,更多的核心,更大缓存,更优的架构
内存:更快的访问速度
超出硬件上限后使用DNS
如何增大Nginx使用CPU的有效时长
能够使用全部CPU资源
master-worker进程架构
worker进程数量应当大于等于CPU核数
nginx进程之间不做无用功浪费CPU资源
worker进程不应该在繁忙时,主动退出CPU
worker进程间不应由争抢造成资源消耗
worker 进程数量应当等于CPU核数
worker进程不应调一些API导致主动让出CPU
拒绝类似的第三方模块
不被其他进程争抢资源
提升worker进程的优先级占用CPU更长时间
减少操作系统上耗资源的非nginx进程
设置worker进程数量的指令
Syntax: worker_processes number | auto;
Default: worker_processes 1; 指定worker进程数量
Context: main
为何一个CPU就可以同时运行多个进程
宏观上并行,微观上串行
把进程运行时间分为一段段的时间片
OS调度系统依次选择每个进程,最多执行时间片指定的时长
阻塞API引发的时间片内主动让出CPU
速度不一致引发的阻塞API
硬件执行速度不一致,例如CPU和磁盘
业务场景产生的阻塞API
例如同步读取网络报文
确保进程在运行态
R运行:正在运行或在运行队列中等待
S中断:休眠中,受阻,在等待某个条件的形成或接受到信号
D不可中断:收到信号不换醒和不可运行,进程必须等待直到有中断发生
Z僵死:进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放
T停止:进程收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU 信号后停止
减少进程间的切换
nginx worker进程尽可能的处于R状态
R状态的进程数量大于CPU核心时,负载急速增高
[root@python ~]# uptime 10:51:14 up 17:22, 1 user, load average: 0.00, 0.01, 0.05top
top - 10:50:43 up 17:22, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie
尽可能减少进程间切换
何为进程间切换
是指CPU从一个进程或者线程切换到另一个进程或者线程
类别:主动切换 被动切换
Cost < 5us 进程切换代价,5微妙
减少主动切换
减少被动切换
增大进程优先级
绑定CPU
延迟处理新连接
使用TCP_DEFER_ACCEPT 延迟处理新连接
指令
listen address[:port] [deferred];
Default: listen *:80 | *:8000;
Context: server
Syntax:
如何查看上下文切换次数vmstat
[root@python ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st1 0 0 1229020 2108 481792 0 0 2 2 17 18 0 0 100 0 0
dstat查看进程上下文切换
[root@python ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 100 0 0 0|4898B 5452B| 0 0 | 0 0 | 34 37 0 0 100 0 0 0| 0 12k| 60B 826B| 0 0 | 56 79 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 38 57 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 42 58 0 1 99 0 0 0| 0 0 | 60B 346B| 0 0 | 55 65 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 52 71 0 0 100 0 0 0| 0 4096B| 60B 346B| 0 0 | 42 61
针对进程查看
[root@python ~]# pidstat -w -p 30170 1
Linux 3.10.0-957.el7.x86_64 (python) 2019年07月19日 _x86_64_ (2 CPU)主动切换 被动切换
11时33分15秒 UID PID cswch/s nvcswch/s Command
11时33分16秒 997 30170 0.00 0.00 nginx
11时33分17秒 997 30170 0.00 0.00 nginx
11时33分18秒 997 30170 0.00 0.00 nginx
控制CPU时间的片大小
[root@python ~]# top
top - 11:49:18 up 18:20, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 5.6 sy, 0.0 ni, 94.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863252 total, 1198048 free, 174916 used, 490288 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1481828 avail Mem 动态 静态PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 30186 root 20 0 162020 2192 1548 R 5.6 0.1 0:00.03 top
设置work进程静态优先级指令
Syntax: worker_priority number;
Default: worker_priority 0; 默认是零,设置优先级最高的话调到-20
Context: main
worker进程间的负载均衡
如何打开此功能
listen指令后加reuseport
CPU缓存命中率;worker进程绑定到CPU指令
Syntax: worker_cpu_affinity cpumask ...; worker_cpu_affinity auto [cpumask];
Default: —
Context: main
转载于:https://www.cnblogs.com/rdchenxi/p/11217294.html
nginx 性能优化的概述及在CPU资源方面的处理相关推荐
- 关于nginx性能优化CPU参数worker_cpu_affinity使用说明
Nginx性能优化CPU参数worker_cpu_affinity使用说明 官方说明:http://wiki.nginx.org/NginxHttpMainModule#worker_cpu_affi ...
- linux nginx cpu 高,Linux 系统 Nginx性能优化CPU参数
Nginx性能优化CPU参数worker_cpu_affinity使用说明 官方说明: worker_cpu_affinity Syntax:worker_cpu_affinity cpumask [ ...
- ab测试nginx Nginx性能优化
转自:https://www.cnblogs.com/nulige/p/9369700.html 1.性能优化概述 在做性能优化前, 我们需要对如下进行考虑 1.当前系统结构瓶颈 观察指标 压力测试 ...
- Nginx 性能优化
Nginx 性能优化有这篇就够了! 1.Nginx运行工作进程数量 Nginx 运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/p ...
- Nginx 性能优化(吐血总结)
文章目录 一.性能优化考虑点 1.当前系统结构瓶颈 2.了解业务模式 3.性能与安全 二.系统与Nginx性能优化 1.文件句柄 (1)设置方式 (2)系统全局性修改和用户局部性修改 (3)进程局部性 ...
- 分享 11 个常用的 Nginx 性能优化参数工作
编辑:业余草 来源:https://www.xttblog.com/?p=4957 分享 11 个常用的 Nginx 性能优化参数教程 工作上,需要配置 Nginx,要投入生产使用,做了一点优化工作, ...
- Nginx性能优化(超详细)
目录 一.性能优化考虑点 一.当前系统结构瓶颈 二.了解业务模式 三.系统与Nginx性能优化 1.文件句柄 (1)设置方式 (2)系统全局性修改和用户局部性修改 (3)进程局部性修改 2.cpu的亲 ...
- 老司机整理对Nginx性能优化
Nginx性能优化应遵循一个原则:一次只调整一项,调整不理想,将修改还原. Linux参数 Nginx很多功能直接使用操作系统实现,操作系统决定nginx上限. 现代linux内核(2.6+)涵盖了大 ...
- Nginx性能优化之cpu优化
如何有效的使用cpu? 1.如何增大Nginx使用cpu的有效时长? 能够使用全部cpu资源:master-worker多进程架构,woker进程数量应该大于等于cpu核数 Nginx进程间不做无用功 ...
最新文章
- (0092)iOS开发AVAudioRecorder录制音频
- python常用内置函数总结-python常用内置函数
- C++二维数组new小结(zz)
- centos6.5 搭建NFS 服务
- C++ STL 中提供的算法
- 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多,把经历分享给你们!
- vantUI组件:van-card 自定义内容 - 踩坑篇
- bzoj3456:城市规划
- 【Tomcat】如何优化tomcat配置(从内存、并发、缓存4个方面)优化
- spark的集群安装
- 三点估算法_三点估算
- notes:poco httpserver and httpclient
- qt生成程序以管理员身份运行和取消以管理员身份运行方式
- Leetcode 1144
- ImageNet Classification with Deep Convolutional Neural Networks(AlexNet论文翻译(附原文))
- 使用Spring 定时器 + selenium打卡
- NFC的读写卡模式——前台调度系统
- day 18 C# 窗体普通计算器
- 51单片机之程序模块化
- 使用Jenkins Pipeline插件和Docker打造容器化构建环境