千家信息网

高并发nginx服务器的linux内核优化配置讲解

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,由于默认的linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,是的Nginx可以拥有更高的性能;在优化内核时,可以做的事情很多,不
千家信息网最后更新 2025年12月03日高并发nginx服务器的linux内核优化配置讲解

由于默认的linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,是的Nginx可以拥有更高的性能;

在优化内核时,可以做的事情很多,不过,我们通常会根据业务特点来进行调整,当Nginx作为静态web内容服务器、反向代理或者提供压缩服务器的服务器时,期内核参数的调整都是不同的,这里针对最通用的、使Nginx支持更多并发请求的TCP网络参数做简单的配置;

以下linux 系统内核优化配置均经在线业务系统测试,并发10万左右服务器运行状态良好,用了一些时间整理,现和大家分享一下,如有那位高人看到配置上有问题,请给与指出!

# Controls the use of TCP syncookies#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;net.ipv4.tcp_syncookies = 1#一个布尔类型的标志,控制着当有很多的连接请求时内核的行为。启用的话,如果服务超载,内核将主动地发送RST包。net.ipv4.tcp_abort_on_overflow = 1#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。#默认为180000,改为6000。对于Apache、Nginx等服务器,此项参数可以控制TIME_WAIT的最大数量,服务器被大量的TIME_WAIT拖死net.ipv4.tcp_max_tw_buckets = 6000#有选择的应答net.ipv4.tcp_sack = 1#该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到65535 字节,对于高速网络.#该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力。net.ipv4.tcp_window_scaling = 1#TCP接收缓冲区net.ipv4.tcp_rmem = 4096    87380  4194304#TCP发送缓冲区net.ipv4.tcp_wmem = 4096    66384  4194304# # Out of socket memorynet.ipv4.tcp_mem = 94500000 915000000 927000000#该文件表示每个套接字所允许的最大缓冲区的大小。net.core.optmem_max = 81920#该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)。net.core.wmem_default = 8388608#指定了发送套接字缓冲区大小的最大值(以字节为单位)。net.core.wmem_max = 16777216#指定了接收套接字缓冲区大小的缺省值(以字节为单位)。net.core.rmem_default = 8388608#指定了接收套接字缓冲区大小的最大值(以字节为单位)。net.core.rmem_max = 16777216#表示SYN队列的长度,默认为1024,加大队列长度为10200000,可以容纳更多等待连接的网络连接数。net.ipv4.tcp_max_syn_backlog = 1020000#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。net.core.netdev_max_backlog = 862144#web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。net.core.somaxconn = 262144#系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。#这个限制仅仅是为了防止简单的DoS 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个net.ipv4.tcp_max_orphans = 327680#时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种"异常"的数据包。这里需要将其关掉。net.ipv4.tcp_timestamps = 0#为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。net.ipv4.tcp_synack_retries = 1#在内核放弃建立连接之前发送SYN 包的数量。www.jb51.netnet.ipv4.tcp_syn_retries = 1#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;net.ipv4.tcp_tw_recycle = 1#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;net.ipv4.tcp_tw_reuse = 1#修改系統默认的 TIMEOUT 时间。net.ipv4.tcp_fin_timeout = 15#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,建议改为20分钟。net.ipv4.tcp_keepalive_time = 30#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)net.ipv4.ip_local_port_range = 1024  65000#以下可能需要加载ip_conntrack模块 modprobe ip_conntrack ,有文档说防火墙开启情况下此模块失效#縮短established的超時時間net.netfilter.nf_conntrack_tcp_timeout_established = 180#CONNTRACK_MAX 允许的最大跟踪连接条目,是在内核内存中netfilter可以同时处理的"任务"(连接跟踪条目)net.netfilter.nf_conntrack_max = 1048576net.nf_conntrack_max = 1048576

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

内核 服务 最大 服务器 参数 大小 缓冲区 缓冲 套接字 字节 内容 单位 数据 数量 文件 时间 系统 网络 配置 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发用户界面设计 荐客极聘网络技术有限公司 t310服务器怎么做raid 江津区一站式网络技术内容 初中网络安全主题漫画 中科院电子所软件开发工程师 服务器如何搭建web 临汾民宿软件开发 asp判断数据库是否连接 如何加强网络安全信息化 阿里巴巴推荐的数据库设计软件 从事危险的网络安全活动 云南正扬互联网科技有限公司 sql自带的数据库 c 窗体如何连接数据库 绿书签网络安全 衢州广电传媒集团软件开发部 构建蛋白质组数据库需要什么流程 银川市互联网科技有限公司 服务器与配置管理自我总结 互联网科技新闻的问题 无线网络安全名字 网站的数据库选择 软件开发工具与环境课程报告 福建网络技术五星服务 数据库中逻辑分级有哪些 临汾网络安全宣传直播观后感 多玩我的世界服务器 天津软件开发公司排行榜 镇 网络安全管理制度制度
0