Nginx性能优化之cpu优化
如何有效的使用cpu?
1.如何增大Nginx使用cpu的有效时长?
能够使用全部cpu资源:master-worker多进程架构,woker进程数量应该大于等于cpu核数
Nginx进程间不做无用功浪费cpu资源:
worker进程不应在繁忙时,主动让出cpu资源(worker进程间不应由于争抢造成资源损耗,worker进程数应该等于cpu核数)
worker不应调用一些api导致主动让出cpu(例如一些第三方库会调用阻塞的方法,使worker进程进入阻塞)
不被其他进程争抢资源:1.提高优先级占用cpu更长时间 2.减少操作系统上耗资源的非nginx进程
设置worker进程的数量
Syntax: worker_processes number | auto;
Default: worker_processes 1;
Context: main
尽量减少进程间的切换:
1.我们的worker进程尽可能的处于R状态
2.尽可能减少进程间切换:一次进程切换的时间<5us,应减少主动切换和被动切换(增大进程的优先级)
3.绑定cpu
延迟处理新连接
使用TCP_DEFER_ACCEPT延迟处理新连接
Syntax: listen address[:port] [deferred];
Default: listen *:80 | *:8000;
Context: server
该选项用于优化TCP协议从建立连接到接受数据的过程中服务器端的开销。在一般的监听套接字中,当三次握手的完成之后,响应的链接就会放入到accept队列中,这时服务器调用accept就会得到一个已连接的套接字,但是这个套接字上也许没有可读的数据,服务器反而要等到数据的到来。而使用这个选项后,三次握手完成之后,这个链接并不能被accept到,而是要等到真正的数据到达的时候,才能被accept得到已连接的套接字nginx开启了TCP_DEFER_ACCEPT后,每accept到一个套接字,立刻就可以对这个套接字进行读操作,提高了效率。
查看进程上下文切换:pidstat -w
设置worker进程的静态优先级
worker_priority number
多核间的负载均衡
惊群效应:多进程(线程)同时阻塞等待同一事件的时候(休眠状态),如果等待的事件发生它就会唤醒等待的所有进程或线程,但是最终只有一个进程或线程获得这个事件的控制权,其他线程或进程只能重新进入休眠状态
default模式:它的accept_mutex是on,相当于在应用层建了一把锁来保证同一时间只有一个worker进程来处理新建立的连接
reuseport:在内核层面提供的一种负载均衡的机制
reuseport通过让所有worker进程均处于listen来实现,然后应用再做相应的负载均衡
提高cpu的缓存命中率
cpu的三级缓存是多核共享的,通过以下指令查看哪些核共享一个三级缓存通过worker_cpu_affinty来进行绑定cpu来增加缓存的命中率
NUMA架构:
查看三级缓存的大小:
查看三级缓存的命中率情况,可以看到下图中缓存的命中率很高
Nginx性能优化之cpu优化相关推荐
- 【linux】性能优化之CPU优化一
文章目录 一.前言 二.性能统计信息 1. 平均负载率. 2. 平均负载率命令 uptime 3. 平均负载和CPU使用的关系 4. 如何定位哪个进程出现问题 一.前言 因为以前只是了解了linux的 ...
- KVM总结-KVM性能优化之CPU优化
前言 任何平台根据场景的不同,都有相应的优化.不一样的硬件环境.网络环境,同样的一个平台,它跑出的效果也肯定不一样.就好比一辆法拉利,在高速公路里跑跟乡村街道跑,速度和激情肯定不同- 所以,我们做运维 ...
- 编译器优化和cpu优化
编译器优化 减少不必要的代码或指令以达到优化; CPU优化 关系密切的操作提前执行,而不是顺序执行; 优化带来的问题 莫名其妙的bug,且不容易复现: 编译器指令优化 volatile修饰的变量,和它 ...
- Linux性能优化之CPU、内存、IO优化
Linux 的性能进行监测,以下是 VPSee 常用的工具: 工具 简单介绍 top 查看进程活动状态以及一些系统状况 vmstat 查看系统状态.硬件和系统信息等 iostat ...
- 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )
文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...
- Lua性能优化—Lua内存优化
原文链接https://blog.uwa4d.com/archives/usparkle_luaperformance.html 这是侑虎科技第236篇原创文章,感谢作者舒航供稿,欢迎转发分享,未经作 ...
- Android应用开发之CPU优化
最近开发一个APK的时候遇到了一个问题,CPU动不动就占用到40%以上,而且是一个服务型的常驻内存APK,这样子肯定不行的,CPU发热可能会过高.这个APK需要优化,包括内存优化,结构优化,CPU优化 ...
- nginx 性能优化的概述及在CPU资源方面的处理
nginx的性能优化的概述 软件层面的提升硬件的使用率 增大CPU的利用率 增大内存的利用率 增大磁盘IO利用率 增大网络带宽利用率 提升硬件规格 网卡:万兆网卡.例如10G.25G.40G等 磁盘: ...
- 关于nginx性能优化CPU参数worker_cpu_affinity使用说明
Nginx性能优化CPU参数worker_cpu_affinity使用说明 官方说明:http://wiki.nginx.org/NginxHttpMainModule#worker_cpu_affi ...
最新文章
- 幼儿园语言活动包括哪几类_幼儿园教育:《一起玩》语言活动教案
- 第四章 遗传变异的分类
- 图解Oracle dump 命令初步
- 《网易编程题》买苹果
- LeetCode 题 - 35. 搜索插入位置
- C# Winform编程ListBox之DrawItem事件
- 强大的Mockito测试框架
- class path resource [spring/] cannot be resolved to URL because it does not exist
- 网络盒子android系统版本怎样刷机,【当贝市场】一键通IPTV盒刷Android系统教程
- H264视频解码器C++工程说明
- 安装显卡后蓝屏0x00000116解决办法
- 给五子棋加个功能叫悔棋
- solidity 中的时间_Solidity官方文档中文版.pdf
- 深入剖析ReentrantLock公平锁与非公平锁源码实现
- 什么是敏感型货物,被海关扣押之后如何处理?
- 开源软件 | 一款深度学习抠图算法,图像精细分割利器
- mysql索引用trie树_数据结构与算法之美【完整版】
- ArcGIS流域提取教程
- Quartz学习之Cron表达式详解
- 1.3小程序的设计规范
热门文章
- 蜂巢私域案例分析:利用SCRM系统重构“人货场”
- 红色警戒95版中各国的异同与遭遇战不同难度的区别
- sierpinski三角形的维数_谢宾斯基三角形的几种生成方法
- [KF2][MutGm Tutorial]Modding第一步:设置好KF2的UnrealScript编译环境
- 使用js实现一个简单的图片时钟
- 3.4.6.进程的诞生和消亡
- 2019 CCSU GOLD!!!
- 高通WLAN框架学习(7)- - SAR(比吸收率)
- 老程序员教你如何提高开发效率、成为大神5——人性管理
- 阿里云ECS服务器无法打开宝塔控制面板的解决方法