WEB服务与NGINX(26)- 实现Nginx高并发系统内核参数优化
1. 实现Nginx高并发系统内核参数优化
由于默认的Linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,使得Nginx可以拥有更高的性能,根据业务特点来进行调整,当Nginx作为静态web内容服务器、反向代理的服务器时,内核参数的调整都是不同的,这里针对最通用的、使Nginx支持更多并发请求的TCP网络参数做简单的配置,修改/etc/sysctl.conf来更改内核参数。
表示单个进程较大可以打开的句柄数
fs.file-max = 999999
参数设置为 1 ,表示允许将TIME_WAIT状态的socket重新用于新的TCP链接,这对于服务器来说意义重大,因为总有大量TIME_WAIT状态的链接存在
net.ipv4.tcp_tw_reuse = 1
当keepalive启动时,TCP发送keepalive消息的频度;默认是2小时,将其设置为10分钟,可更快的清理无效链接
net.ipv4.tcp_keepalive_time = 600
当服务器主动关闭链接时,socket保持在FIN_WAIT_2状态的较大时间
net.ipv4.tcp_fin_timeout = 30
这个参数表示操作系统允许TIME_WAIT套接字数量的较大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息,默认为8000,过多的TIME_WAIT套接字会使Web服务器变慢
net.ipv4.tcp_max_tw_buckets = 5000
定义UDP和TCP链接的本地端口的取值范围
net.ipv4.ip_local_port_range = 1024 65000
定义了TCP接受缓存的最小值、默认值、较大值
net.ipv4.tcp_rmem = 10240 87380 12582912
定义TCP发送缓存的最小值、默认值、较大值
net.ipv4.tcp_wmem = 10240 87380 12582912
当网卡接收数据包的速度大于内核处理速度时,会有一个列队保存这些数据包。这个参数表示该列队的较大值
net.core.netdev_max_backlog = 8096
内核套接字,以下的四个参数,需要根据业务逻辑和实际的硬件成本来综合考虑
表示内核套接字接受缓存区默认大小
net.core.rmem_default = 6291456
表示内核套接字发送缓存区默认大小
net.core.wmem_default = 6291456
表示内核套接字接受缓存区最大大小
net.core.rmem_max = 12582912
表示内核套接字发送缓存区最大大小
net.core.wmem_max = 12582912
与性能无关。用于解决TCP的SYN攻击
net.ipv4.tcp_syncookies = 1
这个参数表示TCP三次握手建立阶段接受SYN请求列队的较大长度,默认1024,将其设置的大一些可使出现Nginx繁忙来不及accept新连接时,Linux不至于丢失客户端发起的链接请求
net.ipv4.tcp_max_syn_backlog = 8192
这个参数用于设置启用timewait快速回收
net.ipv4.tcp_tw_recycle = 1
选项默认值是128,这个参数用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此需要结合高并发请求数来调节此值。
net.core.somaxconn=262114
选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立链接将立即被复位并输出警告信息。这个限制指示为了防止简单的DOS攻击,不用过分依靠这个限制甚至认为的减小这个值,更多的情况是增加这个值
net.ipv4.tcp_max_orphans=262114
WEB服务与NGINX(26)- 实现Nginx高并发系统内核参数优化的更多相关文章
- tengine编译安装及nginx高并发内核参数优化
Tengine Tengine介绍 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性. Tengine的性能和稳定性已经在大型的 ...
- 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...
- 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...
- 面试题:Nginx 是如何实现高并发?常见的优化手段有哪些?
面试题: Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些? 面试官心理分析 主要是看应聘人员的对NGINX的基本原理是否熟悉, ...
- nginx+lua+redis构建高并发应用(转)
nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis, ...
- Nginx与Redis解决高并发问题
原文链接:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=229629 第一版产品采用的是Jquery,Nginx,PHP(CI框架) ...
- sql 数据量高并发的数据库优化(转)
Mysql 大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实 ...
- (转)nginx应用总结(2)--突破高并发的性能优化
原文:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题. ...
- nginx应用总结(2)--突破高并发的性能优化
在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题.今天这里简单梳理下nginx性能优化的配置(仅仅依据本人的实战经验而述,如有不妥,敬请指出~) 一.这里 ...
- Nginx和Tengine解决高并发和高可用,而非推荐Apache
什么是Nginx 什么是Tengine 看看国内大公司在用Nginx和Tengine吗? 步骤一:进入 https://www.taobao.com/,按F12.可看到 有很多APP对淘宝进行请求. ...
随机推荐
- HashMap的三种遍历方式--Java--小白必懂
初学Hash Map总感觉它的遍历很麻烦,其实看懂后总结一下就是:集合+泛型,没啥特别的 总结一下HashMap的三种遍历方法如下: 保证一看就会>>> 1 // 对HashMap的 ...
- 基于rk3588----i2c驱动框架学习(2)-总线驱动 algorithm 分析
rk3588 i2c algorithm 分析 来了来了,上次分析完i2c的驱动框架 今天我们就看看i2c的algorithm是如何实现的 static const struct i2c_algori ...
- mybatis使用Hashmap传递参数
mapper 1 <!--传递map的key --> 2 <insert id="addUser2" parameterType="map"& ...
- 开源图形驱动在OpenHarmony上的使用和落地
本文转载自 OpenHarmony TSC 官方微信公众号<峰会回顾第10期 | 开源图形驱动在OpenHarmony上的使用和落地> 演讲嘉宾 | 黄 然 回顾整理 | 廖 ...
- Openstack之工作流程
组件 OpenStack的核心部件即包括Nova(用于计算).Keystone(用于身份服务).Neutron(用于网络和地址管理).Cinder(块存储).Swift(对象存储).Glance(镜像 ...
- 淘宝二面:MySQL里有2000万条数据,但是Redis中只存20万的数据,如何保证redis中的数据都是热点数据?
引言 在当今互联网领域,尤其在大型电商平台如淘宝这样的复杂分布式系统中,数据的高效管理和快速访问至关重要.面对数以千万计的商品.交易记录以及其他各类业务数据,如何在MySQL等传统关系型数据库之外,借 ...
- identity4 系列————用户数据持久化篇[六]
前言 前面的例子已经将各种情形下的例子已经介绍了一遍,那么后面就是用户数据持久化该如何处理了. 正文 例子位置: https://github.com/IdentityServer/IdentityS ...
- electron 关于jquery不可以用
前言 electron 实际是在google 内核上开发,实际上和我们在浏览器还是有些区别的. jquery 在electron 上引用是会出错的. 正文 解决方案 如果不做任何操作,在Electro ...
- Spark SQL 抽样函数 ——TABLESAMPLE 的坑点
最近需要实现一段 Spark SQL 逻辑,对数据集进行抽样指定的行数. 由于数据集较大,刚开始的逻辑是,取窗口函数随机排序后 row_number 的前 n 行.但运行速度较慢,所以想起了 TABL ...
- el-tree选中子级时默认选中父级(角色授权)
问题1:选中子级时默认选中父级 <el-tree :data="menuData" show-checkbox default-expand-all node-key=&qu ...