linux百万级长链接系统配置

以下在centos7上试验通过

1. 前提

1)关闭selinux

修改/etc/selinux/config 
将SELINUX=enforcing改为SELINUX=disabled

2)关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

2. 修改/etc/security/limits.conf、/etc/sysctl.conf、/etc/systemd/system.conf

1) /etc/security/limits.conf

# End of file
root      soft    nofile          20000000
root      hard    nofile          20000000
*         soft    nofile          20000000
*         hard    nofile          20000000

2) /etc/systemd/system.conf

DefaultLimitCORE=infinity
DefaultLimitNOFILE=20000000
DefaultLimitNPROC=20000000

 3) /etc/sysctl.conf

客户端

# 系统级别最大打开文件
fs.file-max = 20000000
 
# 单用户进程最大文件打开数
fs.nr_open = 20000000
 
# 是否重用, 快速回收time-wait状态的tcp连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
 
# 单个tcp连接最大缓存byte单位
net.core.optmem_max = 8192
 
# 可处理最多孤儿socket数量,超过则警告,每个孤儿socket占用64KB空间
net.ipv4.tcp_max_orphans = 10240
 
# 最多允许time-wait数量
net.ipv4.tcp_max_tw_buckets = 10240
 
# 从客户端发起的端口范围,默认是32768 61000,则只能发起2w多连接,改为一下值,可一个IP可发起差不多6.4w连接。
net.ipv4.ip_local_port_range = 1024 65535

服务端

# 系统最大文件打开数
fs.file-max = 20000000
 
# 单个用户进程最大文件打开数
fs.nr_open = 20000000
 
# 全连接队列长度,默认128
net.core.somaxconn = 10240
# 半连接队列长度,当使用sysncookies无效,默认128
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_syncookies = 0
 
# 网卡数据包队列长度  
net.core.netdev_max_backlog = 41960
 
# time-wait 最大队列长度
net.ipv4.tcp_max_tw_buckets = 300000
 
# time-wait 是否重新用于新链接以及快速回收
net.ipv4.tcp_tw_reuse = 1  
net.ipv4.tcp_tw_recycle = 1
 
# tcp报文探测时间间隔, 单位s
net.ipv4.tcp_keepalive_intvl = 30
# tcp连接多少秒后没有数据报文时启动探测报文
net.ipv4.tcp_keepalive_time = 900
# 探测次数
net.ipv4.tcp_keepalive_probes = 3
 
# 保持fin-wait-2 状态多少秒
net.ipv4.tcp_fin_timeout = 15  
 
# 最大孤儿socket数量,一个孤儿socket占用64KB,当socket主动close掉,处于fin-wait1, last-ack
net.ipv4.tcp_max_orphans = 131072  
 
# 每个套接字所允许得最大缓存区大小
net.core.optmem_max = 819200
 
# 默认tcp数据接受窗口大小
net.core.rmem_default = 262144  
net.core.wmem_default = 262144  
net.core.rmem_max = 16777216  
net.core.wmem_max = 16777216
 
# tcp栈内存使用第一个值内存下限, 第二个值缓存区应用压力上限, 第三个值内存上限, 单位为page,通常为4kb
net.ipv4.tcp_mem = 786432 4194304 8388608
# 读, 第一个值为socket缓存区分配最小字节, 第二个,第三个分别被rmem_default, rmem_max覆盖
net.ipv4.tcp_rmem = 4096 4096 4206592
# 写, 第一个值为socket缓存区分配最小字节, 第二个,第三个分别被wmem_default, wmem_max覆盖
net.ipv4.tcp_wmem = 4096 4096 4206592

# 从客户端发起的端口范围,默认是32768 61000,则只能发起2w多连接,改为一下值,可一个IP可发起差不多6.4w连接。
net.ipv4.ip_local_port_range = 1024 65535

重启生效或者执行sysctl -p。

执行ulimit -a可检查是否生效。

内核>=2.6.32

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值