Linux网络编程修改内核参数

1.修改主机能打开的最大文件描述符数量

当服务器出现报错"Too many open files"时,说明服务端的能打开的最大文件描述符数量不够用了,需要增加。

查看进程能打开的最大文件描述符数量:

[root@master ~]# ulimit -n
1024

假设要修改能打开的最大文件描述符数量为100W:

# vim /etc/sysctl.conf
fs.file-max=1100000     # 系统级别设置为100W,多留点buffer
fs.nr_open=1100000      # 进程级别也设置为110W,因为要保证比hard nofile大
# sysctl -p

# limits.conf中的hard nofile不能超过nr_open参数,否则启动的时候会有问题
# 用户级别设置  *为通配符,表示为所有用户设置
# vim /etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000

重启后再次查看:

[root@master ~]# ulimit -n
1000000

 

2.修改主机可用端口范围

客户端出现"Cannot assign requested address"时说明没有可用端口了,需要扩大可用的端口范围了。

一条TCP连接由一个四元组组成:Server IP、Server Port、Client IP、Client Port。在连接建立前,前面的三个元素是确定的,只有Client Port是需要内核动态选择出来的(也可以自己指定)。

客户端会在connect发起的时候自动选择端口号。具体的选择过程就是随机地从ip_local_port_range选择一个位置开始循环判断,跳过ip_local_reserved_ports里设置的要规避的端口,然后挨个判断是否可用。如果循环完也没有找到可用端口,会报错"Cannot assign requested address"。

解决这个问题的方法可用扩大可用端口范围或者减小最大TIME_WAIT状态连接数量:

# vim /ect/sysctl.conf
net.ipv4.ip_local_port_range = 5000 65000   # 可用端口范围设置为 5000 - 65000
# 设置最大TIME_WAIT数量
net.ipv4.tcp_max_tw_buckets = 10000
# sysctl -p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值