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

服务器展示:

相关推荐
大筒木老辈子17 分钟前
Linux笔记---计算机网络概述
linux·笔记·计算机网络
keep__go1 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql
深思慎考2 小时前
LinuxC++项目开发日志——高并发内存池(1-定长内存池)
linux·c++
川石课堂软件测试3 小时前
Oracle 数据库如何查询列
linux·数据库·sql·功能测试·oracle·grafana·prometheus
光电的一只菜鸡4 小时前
ubuntu之坑(十九)——VMware虚拟机扩容磁盘
linux·数据库·ubuntu
岚天start5 小时前
网络计算工具ipcalc详解
linux·运维·网络·网关·广播地址·掩码·ipcalc
deeper_wind5 小时前
Jenkins主机中安装ansible部署lnmp论坛(小白的”升级打怪“成长之路)
linux·ansible·jenkins
格林威5 小时前
Linux使用-Linux系统管理
linux·运维·服务器·深度学习·ubuntu·计算机视觉
weixin_410413216 小时前
Linux 无源码应用行为分析方法
linux·服务器·tomcat
AI小小怪7 小时前
在linux下使用MySQL常用的命令集合
linux·数据库·mysql·oracle