linux服务TCP参数配置

Linux TCP参数配置

阿里云规范

1.【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。

说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服务器端会因为处于

time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上调小此等待值。

正例:在 linux 服务器上请通过变更/etc/sysctl.conf 文件去修改该缺省值(秒):net.ipv4.tcp_fin_timeout=30

2.【推荐】调大服务器所支持的最大文件句柄数(File Descriptor,简写为 fd)

说明:主流操作系统的设计是将 TCP / UDP 连接采用与文件一样的方式去管理,即一个连接对应于一个 fd。主流的 linux

服务器默认所支持最大 fd 数量为 1024,当并发连接数很大时很容易因为 fd 不足而出现"open too many files"错误,

导致新的连接无法建立。建议将 linux 服务器所支持的最大句柄数调高数倍(与服务器的内存数量相关)。

参数详情

为防止洪水攻击,高并发系统需要将此项关闭

net.ipv4.tcp_syncookies = 0

开启TCP连接重用,允许处理TIME-WAIT状态的连接重新用于新的TCP连接

net.ipv4.tcp_tw_reuse = 1

开启快速回收TCP连接中处于TIME-WAIT状态的连接

net.ipv4.tcp_tw_recycle = 1

#修改超时时间( s ),该值表示如果连接由本端关闭,则连接处于 FIN-WAIT-2状态的时间为

net.ipv4.tcp_fin_timeout = 30

#当 keepalive(长连接)启用的时候,TCP发送 keepalive 消息(探测包)的时间间隔( s ),默认为2个小时

net.ipv4.tcp_keepalive_time =1200

#服务器对外连接的端口范围,影响该服务器与其他服务器的连接数

net.ipv4.ip_local_port_range =102465535

#SYN队列的长度,可以容纳更多等待连接的网络连接数,默认为1024

net.ipv4.tcp_max_syn_backlog = 65535

#保持 TIME_WAIT 状态连接的最大数量,如果超过此值,TIME_WAIT 将立刻被清除并打印警告信息,默认为180000

net.ipv4.tcp_max_tw_buckets =5000

#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.netdev_max_backlog =65535

TCP最大连接数

net.core.somaxconn = 65535

#预留用于接收缓冲的内存默认值(字节)

net.core.rmem_default = 8388608

#预留用于接收缓冲的内存最大值(字节)

net.core.rmem_max = 16777216

#预留用于发送缓冲的内存默认值(字节)

net.core.wmem_default = 8388608

#预留用于发送缓冲的内存最大值(字节)

net.core.wmem_maX = 16777216

#避免时间戳异常

net.ipv4.tcp_timestamps = 0

#系统中最多有多少个 TCP 套接字不被关联到任何一个用户文件句柄上,如果超过这个数字,连接将即刻被复位并打印警告信息,这个限制仅仅是为了防止简单的DoS 攻击

net.ipv4.tcp_max_orphans =3276800

生产环境配置

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_wmem = 4096 16384 4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 262144

net.core.somaxconn = 262144

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 30

net.ipv4.ip_local_port_range = 1024 65000

服务器展示:

相关推荐
傲世(C/C++,Linux)1 小时前
Linux系统编程——TCP服务器
linux·服务器·tcp/ip
橘子真甜~2 小时前
C/C++ Linux网络编程8 - epoll + ET Reactor TCP服务器
linux·服务器·网络
万变不离其宗_82 小时前
centos 手动安装redis
linux·redis·centos
_lst_2 小时前
linux进程状态
linux·运维·服务器
稚辉君.MCA_P8_Java3 小时前
Gemini永久会员 归并排序(Merge Sort) 基于分治思想(Divide and Conquer)的高效排序算法
java·linux·算法·spring·排序算法
wanderist.3 小时前
Linux使用经验——离线运行python脚本
linux·网络·python
biter00884 小时前
Ubuntu 22.04 有线网络时好时坏?最终解决方案
linux·网络·ubuntu
zzzsde4 小时前
【Linux】基础开发工具(3):编译器
linux·运维·服务器
愚戏师5 小时前
Python3 多线程
linux·运维·服务器·python
n***33356 小时前
linux redis简单操作
linux·运维·redis