文档章节

Nginx 高并发TCP请求Linux系统参数配置

满小茂
 满小茂
发布于 2015/12/28 22:53
字数 939
阅读 915
收藏 91

需要修改/etc/sysctl.conf来更改内核参数

#原有字段  
net.ipv4.tcp_syncookies = 1  
#新增字段  
fs.file-max = 999999  
net.ipv4.tcp_tw_reuse = 1  
net.ipv4.tcp_keepalive_time = 600  
net.ipv4.tcp_fin_timeout = 30  
net.ipv4.tcp_max_tw_buckets = 5000  
net.ipv4.ip_local_port_range = 1024 61000  
net.ipv4.tcp_rmem = 10240 87380 12582912  
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  
net.ipv4.tcp_max_syn_backlog = 1024


fs.file-max = 999999:这个参数表示进程(比如一个worker进程)可以同时打开的最大句柄数,这个参数直线限制最大并发连接数,需根据实际情况配置。


net.ipv4.tcp_tw_reuse = 1:这个参数设置为1,表示允许将TIME-WAIT状态的socket重新用于新的TCP连接,这对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。


net.ipv4.tcp_keepalive_time = 600:这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置的小一些,可以更快地清理无效的连接。


net.ipv4.tcp_fin_timeout = 30:这个参数表示当服务器主动关闭连接时,socket保持在FIN-WAIT-2状态的最大时间。


net.ipv4.tcp_max_tw_buckets = 5000:这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。该参数默认为180 000,过多的TIME_WAIT套接字会使Web服务器变慢。


net.ipv4.tcp_max_syn_backlog = 1024:这个参数标示TCP三次握手建立阶段接受SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求。


net.ipv4.ip_local_port_range = 1024 61000:这个参数定义了在UDP和TCP连接中本地(不包括连接的远端)端口的取值范围。


net.ipv4.tcp_rmem = 10240 87380 12582912:这个参数定义了TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值。


net.ipv4.tcp_wmem = 10240 87380 12582912:这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值。


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:这个参数表示内核套接字发送缓存区的最大大小。


net.ipv4.tcp_syncookies = 1:该参数与性能无关,用于解决TCP的SYN攻击。


注意:滑动窗口的大小与套接字缓存区会在一定程度上影响并发连接的数目。每个TCP连接都会为维护TCP滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张。


参数net.core.wmem_max = 12582912的设置,需要平衡物理内存的总大小、Nginx并发处理的最大连接数量而确定。当然,如果仅仅为了提供并发量使服务器不出现Out Of Memory问题而去降低滑动窗口大小,那么并不合适,因为滑动窗过小会影响大数据量的传输速度。net.core.rmem_default = 6291456、net.core.wmem_default = 6291456、

net.core.rmem_max = 12582912和net.core.wmem_max = 12582912这4个参数的设置需要根据我们的业务特性以及实际的硬件成本来综合。


Nginx并发处理的最大连接量:由nginx.conf中的work_processes和work_connections参数决定。


© 著作权归作者所有

共有 人打赏支持
满小茂
粉丝 76
博文 120
码字总数 135036
作品 0
成都
程序员
私信 提问
基于Nginx实现10万+并发,你应该做的Linux内核优化

基于Nginx实现10万+并发,你应该做的Linux内核优化 由于默认的linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,是的Nginx...

linjin200
2018/04/30
0
0
nginx服务器Linux内核参数优化

由于默认的Linux内核参数考虑的是最通用的场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,使得Nginx可以拥有更高的性能。 在优化内核时,可以做的事件...

Foundation
2015/12/21
62
0
nginx优化篇之Linux 内核参数的优化 (2)

原博客地址(欢迎访问):http://www.loveyqq.tk/blog/2014/05/27/nginxyou-hua-pian-zhi-linux-nei-he-can-shu-de-you-hua/ 由于默认的Linux内核参数考虑的是最通用的场景,这明显不符合用于支...

NILYANG
2015/04/16
0
0
每秒 50 万次请求处理,你的 Web 服务器能办到吗?

现在的 HTTP 服务器性能非常之高,在一些配置一般的服务器上一样可以有非常棒的表现,下面是对 Nginx 1.0.14 自带的默认首页进行压力测试的结果,图表显示每秒请求数和并发连接数: 在这张图...

红薯
2012/03/23
14.4K
45
Nginx 配置高并发

一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。 2. workercpuaffi...

follitude
2016/09/11
43
0

没有更多内容

加载失败,请刷新页面

加载更多

监听DOM上某一个元素是否发生变化,利用MutationObserver来监听元素变化

/** * 观察DOM是否发变化的事件 * @type {MutationObserver|*} */var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserv......

lwkai
28分钟前
2
0
遇到的问题

问题1:前两天在Nodepad++写了一个登录页面,但在Chrome中调试一直写不进Cookie。 解决办法:Chrome浏览器不支持本地静态js写Cookie。换用Edge调试即可。 内心:卧槽,浪费我这么多时间。 问...

akane_oimo
30分钟前
5
0
Oracle学习日志-6(聚合查询)

聚合函数 聚合函数可以对数据进行某种操作或者计算。比如几个常用的函数: COUNT:计算表中行数。 SUM:计算表中数据列中数据的合计值。 AVG:计算表中数据列中数据的平均值。 MAX:求出表中...

白话
32分钟前
3
0
Axure原型工具Axure RP9安装及Licensee

http://www.zhanshaoyi.com/9132.html

晚风0623
37分钟前
2
0
如何限制用户仅通过HTTPS方式访问OSS?

一、当前存在的问题 当前OSS支持用户使用HTTPS/HTTP协议访问Bucket。但由于HTTP存在安全漏洞。大型企业客户都要求使用HTTPS方式访问OSS,并且拒绝HTTP访问请求。 目前OSS可以通过RAM policy方...

阿里云官方博客
58分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部