linux系统tcp优化配置

全局服务生效,但是如果当前用户登陆shell,优先登陆用户limits.conf配置,但是limits.conf配置如果超越sysctl.conf配置,则无效(只能往小,不能往大),系统后台服务不受limits.conf限制

vi /etc/sysctl.d/chris_tcp.conf

#TCP 协议栈网络参数

#并发连接 backlog 设置:
net.core.somaxconn = 2048  
net.ipv4.tcp_max_syn_backlog = 16384  
net.core.netdev_max_backlog = 20000  


#TCP Socket 读写 Buffer 设置:
net.core.rmem_default = 262144  
net.core.wmem_default = 262144  
net.core.rmem_max = 16777216  
net.core.wmem_max = 16777216  
net.ipv4.tcp_rmem = 4096 4096 16777216  #'1024 4096 16777216'
net.ipv4.tcp_wmem = 4096 4096 16777216  #'1024 4096 16777216'
net.ipv4.tcp_mem = 786432 2097152 3145728   #'16777216 16777216 16777216'


#TCP 连接追踪设置:
net.nf_conntrack_max=1000000
net.netfilter.nf_conntrack_max=1000000
net.netfilter.nf_conntrack_tcp_timeout_time_wait=30


#FIN-WAIT-2 Socket 超时设置:
net.ipv4.tcp_fin_timeout = 15  


#TIME-WAIT Socket 最大数量、回收与重用设置:
net.ipv4.tcp_max_tw_buckets=1048576

# 注意:不建议开启該设置,NAT 模式下可能引起连接 RST
#是否重用, 快速回收time-wait状态的tcp连接
#net.ipv4.tcp_tw_reuse = 1  
#net.ipv4.tcp_tw_recycle = 1  


#可处理最多孤儿socket数量,超过则警告,每个孤儿socket占用64KB空间
net.ipv4.tcp_max_orphans = 131072  


#可分配端口 可用知名端口范围
net.ipv4.ip_local_port_range = 1024 65535  

#系统级别最大打开文件
#百万并发服务器中常用的几个配置 , 注意一个正向连接要消耗2个tcp,	一个反向代理需要消耗4个tcp
fs.file-max = 2000000
#单用户进程最大文件打开数
fs.nr_open = 2000000


/sbin/sysctl -p 生效

net.ipv4.tcp_rmem用来配置读缓冲的大小,三个值,第一个是这个读缓冲的最小值,第三个是最大值,中间的是默认值

net.ipv4.tcp_wmem用来配置写缓冲的大小。读缓冲与写缓冲在大小,直接影响到socket在内核中内存的占用。

net.ipv4.tcp_mem则是配置tcp的内存大小,其单位是页,而不是字节。当超过第二个值时,TCP进入 pressure模式,此时TCP尝试稳定其内存的使用,当小于第一个值时,就退出pressure模式。当内存占用超过第三个值时,TCP就拒绝分配 socket了,查看dmesg,会打出很多的日志“TCP: too many of orphaned sockets”。

net.ipv4.tcp_max_orphans这个值也要设置一下,这个值表示系统所能处理不属于任何进程的 socket数量,当我们需要快速建立大量连接时,就需要关注下这个值了。当不属于任何进程的socket的数量大于这个值时,dmesg就会看 到”too many of orphaned sockets”。

ip_local_port_range 一台系统上,连接到一个服务时的本地端口是有限的。由于端口是16位整数,也就只能是0到 65535,而0到1023是预留端口,所以能分配的只是1024到65534,也就是64511个。也就是说,一台机器只能创建六万多个长连接。要达到 我们的两百万连接,需要大概34台客户端。

/etc/sysctl.conf与/proc/sys/目录的关系

  • 备注:在/etc/sysctl.conf中配置之后,需要使用sysctl -p命令加载才可以将配置的值更新到/proc/sys/目录对应的文件中

  • 备注:光修改/etc/sysctl.conf配置文件是没有用的,还需要使用sysctl -p命令将/etc/sysctl.conf配置文件的内容加载到/proc/sys/目录对应的文件中(重启后会自动价值,运行环境要用sysctl -p)

 

单用户最大打开文件数

vi /etc/security/limits.conf
*    soft    nofile  1000000  
*    hard    nofile  1000000  

#使用命令查看
ulimit -a
ulimit -n 

注意:此设置 只对当前登陆用户shell有效,对于系统后台服务无效,需要用到/etc/sysctl.d/配置才会对系统生效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值