企业级nginx内核优化篇
1. cpu核心配置
方法1: worker_processes auto; 自动调用[推荐]
方法2: worker_processes 4; 手工配置
检查CPU核心:yum install numactl
命令: numactl --hardware
[root@leilei ~]# numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1
node 0 size: 4095 MB
node 0 free: 194 MB
node distances:
node 0
0: 10
2. cpu绑定减少进程切换:
#如 双核CPU配置: worker_cpu_affinity 01 10;
四核cpu配置: worker_cpu_affinity 0001 0010 0100 1000;
八核cpu配置: worker_cpu_affinity 0001 0010 0100 1000 1001 1010 1100 1101;
自动切换: worker_cpu_affinity auto;
3. 进程优先级:
方法1: worker_priority 0; 默认配置
方法2: worker_priority -20; 优先级最高
4. 并发连接:
worker_connections 100000;
nginx默认为1024,当访问量过大时1024就不够用了
需要修改worker_rlimit_nofile文件打开数,这个不能被worker_connections超出,否则会出现wern,所以基本配置:
worker_rlimit_nofile 65535; #不应该超过ulimit -a中的数值.
worker_connections 100000; #单个work进程的最大并发数
worker_rlimit_nofile 65535;
worker_connections 100000;
5. 事件处理模型:
events {
use epoll;
worker_rlimit_nofile 65535;
worker_connections 100000; #上下游连接加起来 都是使用这个句柄数.
multi_accept on; #允许尽可能接受多的连接 默认值off 建议改为 on
accept_mutex on; # 防止被唤醒,从而加重服务器压力,默认值 off 建议改为on
accept_mutex_delay 10ms; # 设置获得互斥锁的最少延迟时间。 默认值 500ms
}
6. 开启同时接受多连接
events {
multi_accept on;
}
7. 避免频繁唤醒
events {
accept_mutex on;
}
8. sendfile 高效传输:
配置区块: http server location
sendfile on;
9. 内核优化:
cat /etc/sysctl.cnf
net.core.netdev_max_backlog = 1000 #默认值1000 在高并发情况下该值可以改为 102400
net.core.somaxconn = 128 #默认值1000 在高并发情况下可以设置更高 102400
net.ipv4.tcp_max_orphans = 32768 #默认值32768 这是TCP连接套戒指缓存,用于防止DDOS攻击,在内存较大时可以修改的大一些 如: 102400
net.ipv4.tcp_max_syn_backlog = 256 #默认值256 这是用于记录未被确认的连接,一般需要加大 如: 102400
net.ipv4.tcp_timestamps = 1 #默认值1 这是用于数据包时间戳的支持设置,避免网络异常,默认值 1 建议修改为 0 禁用此设置
net.ipv4.tcp_synack_retries = 5 #默认值5 这是设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量,用于三次握手,如果值设置过多会影响性能 建议改为 2
net.ipv4.tcp_syn_retries = 5 #默认值5 与上面功能类似,建议修改为 2
10. 多核负载均衡:
listen 80 reuseport;
listen 443 ssl http2 default_server reuseport;
连接请求的速度是很高的,但是请求不需要大量的处理,reuseport 也能大幅提高性能,此优化项需要继续centos7以上或Linux内核3.9以上的版本才可以使用. 因为它是基于内核层面负载均衡
引用reuseport参数后,对引用的socket,accept_mutex参数将会无效
11. TCP连接握手优化[内核调优]:
net.ipv4.tcp_syn_retries = 6 #主动建立连接,发送SYN报文的重试次数.
net.ipv4.ip_local_port_range = 32768 60999 #建立连接后本地端口的可用范围
net.ipv4.tcp_fastopen = 3 #fast open 配置: 0 关闭 1 作为客户端使用 2 作为服务器使用 3 无论客户端和服务器都可以使用
net.ipv4.tcp_retries1 = 3 #丢包重传上限,到达上限,更新缓存
net.ipv4.tcp_retries2 = 15 #丢包重传上限,到达上限,更新缓存
net.ipv4.ip_local_port_range = 20000 65535 #可用端口范围
net.ipv4.tcp_sack = 1 #错误状态快速恢复
#net.ipv4.tcp_fack = 1 #拥塞避免和 快速重传功能 当tcp_sack设置为0的时候,这个值即使设置为1也无效
net.ipv4.tcp_max_syn_backlog = 128 #syn_rcvd状态连接最大个数# 防止TCP半连接报文攻击
net.ipv4.tcp_synack_retries = 1 #三次握手中的第二次握手,该配置决定Linux内核放弃连接之前发送syn+ack确认包的数量
net.ipv4.tcp_tw_recycle = 1 #TCP连接中的time_wait sockets的快速回收
net.ipv4.tcp_tw_reuse = 1 #开启连接复用,将time_wait sockets重新用于新的tcp连接.
net.ipv4.ip_local_port_range = 20000 65535 #对外处理连接的端口反围
fs.file-max = 204800 #文件句柄数
这些调优参数加入到 /etc/sysctl.conf 后 使用 sysctl -p 让他生效
12. TCP连接建立优化
net.core.netdev_max_backlog = 25000 #默认128 [防止syn攻击backlog] 这是接受来自网卡,但是未被内核协议栈处理的报文队列长度.
net.ipv4.tcp_max_syn_backlog = 25000 #默认128 syn_rcvd状态连接最大个数# 防止TCP半连接报文攻击
13. TCP设置时间戳,避免复用
net.ipv4.tcp_timestamps = 0
14. 主动建立连接应用层超时时间[反向代理相关]
proxy_connect_timeout 60s;
15. 超出处理能力,对新来的SYN直接丢弃连接 [别配置]
net.ipv4.tcp_abort_on_overflow = 0
16. SYN队列满后,新的SYN不进入列队 1代表启用 0 关闭
net.ipv4.tcp_syncookies = 1
企业级nginx内核优化篇的更多相关文章
- Nginx 内核优化
内核参数的优化示例: /etc/sysctl.conf net.ipv4.tcp_max_tw_buckets = // timewait的数量,默认是180000. net.ipv4.ip_loca ...
- 企业级Web Nginx 服务优化
企业级Web Nginx 服务优化 http://blog.51cto.com/search/result?q=%E4%BC%81%E4%B8%9A%E7%BA%A7Web+Nginx+%E6%9C% ...
- Nginx 性能优化有这篇就够了!
目录: 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 g ...
- 突破10万高并发的nginx性能优化经验(含内核参数优化)
写的很好,推荐阅读. 转载:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并 ...
- 企业级web nginx服务优化
1.1)隐藏nginx header 内版本号信息 [root@aliyun ~]# vi /application/nginx/conf/nginx.conf http{ …… server_tok ...
- (转)Nginx配置和内核优化 实现突破十万并发
nginx指令中的优化(配置文件) worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数. worker_cpu_affinity 00000001 00 ...
- [效果不错] nginx 高并发参数配置及linux内核参数优化,完整的内核优化设置。PHP-FPM高负载解决办法。
背景:对vps小资源的实践中对,https://justwinit.cn/post/7536/ 的再优化,再实践,再优化,特别是Nginx,PHP,内核: 零)Nginx: error_log /da ...
- Nginx优化指南+LINUX内核优化+linux连接数优化+nginx连接数优化
Most setup guides for Nginx tell you the basics - apt-get a package, modify a few lines here and the ...
- 转:Nginx 性能优化有这篇就够了!
目录: https://mp.weixin.qq.com/s/YoZDzY4Tmj8HpQkSgnZLvA 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2 ...
- 【转】Nginx服务并发过10万的Linux内核优化配置
http://www.linuxidc.com/Linux/2012-11/75151.htm以下Linux 系统内核优化配置均经在线业务系统测试,服务器运行状态良好,用了一些时间整理,现和大家分享一 ...
随机推荐
- Tomcat启动闪退的10个解决小技巧
引言 大家好!在我们日常开发中,使用Tomcat作为Web服务器是相当常见的. 然而,遇到Tomcat启动后立即闪退的问题也不是什么稀罕事. 这种情况可能会让人感到困惑和沮丧,特别是当你急需完成一个项 ...
- 重新整理.net core 计1400篇[二] (.net core 改造控制台项目)
前言 为.net core 命令行的基础上写的,如果有兴趣的话,可以去看我的.net core 前文. 下面介绍如何将.net core控制台转换为.net core web应用. 正文 如果我们要实 ...
- This version of Android Studio cannot open this project, please retry with Android Studio 4.0 or newer.
前言 遇到的问题,This version of Android Studio cannot open this project, please retry with Android Studio 4 ...
- Tkinter常用功能示例(一)
技术背景 Tkinter是一个Python自带的GUI框架,虽然现在主流的还是用pyqt的多一些,但是Tkinter在环境配置上可以节省很多工作,可以用来做一些小项目.如果是大型项目,用pyqt或者Q ...
- Fatal: (vsim-3381) obsolete library format 解决办法
有很多软件仿真都是black boxs 黑盒子模式,所以用modelsim提示该错误.错误的原因是在于库用了其他旧的软件版本编译好的. 所以解决的办法如下: 在已经映射好的库选择refresh就可以刷 ...
- TaskPool 和 Worker 的对比
作用: TaskPool(任务池)和 Worker 都为应用程序提供多线程运行环境,用于处理耗时的计算任务或其他密集型任务,避免阻塞主线程,提高系统性能. 实现特点对比: 内存模型:TaskPoo ...
- 国内chatGPT中文版网站有哪些?国内人工智能百花齐放!该如何选择?
人工智能技术在中国的快速发展和普及,使得国内的人工智能产业日益壮大.在这些领域中,自然语言处理技术和聊天机器人已经取得了显著的进展.ChatGPT作为一种基于深度学习的聊天机器人模型,在国内得到了广泛 ...
- 中国大陆地区维护的Linux操作系统
Linux开源生态丰富,中国大陆地区基于CentOS停服,依托阿里云.腾讯云.华为云三大私营企业,相继发布了自己的开源Linux定制版,很高兴的是他们只是改个名字并没有选择闭门造车,只是官网还是很不耻 ...
- 力扣566(java)-重塑矩阵(简单)
题目: 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据. 给你一个由二维数组 mat 表示的 ...
- 大型企业数据库服务首选,AliSQL这几大企业级功能你了解几个?
MySQL代表了开源数据库的快速发展,从2004年前后的Wiki.WordPress等轻量级Web 2.0应用起步,到2010年阿里巴巴在电商及支付场景大规模使用MySQL数据库,再到2012年开始阿 ...