linux下设置ip_local_port_range参数
时间:2022-07-24
本文章向大家介绍linux下设置ip_local_port_range参数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在对于繁忙的网络服务器,如代理服务器或负载平衡器,我们可能需要增加网络端口范围来增强它的处理能力。
在Linux上,有一个sysctl参数ip_local_port_range
,可用于定义网络连接可用作其源(本地)端口的最小和最大端口的限制,同时适用于TCP和UDP连接。
查看当前系统开放端口范围,命令如下:
# cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000
要么:
# sysctl net.ipv4.ip_local_port_rangenet.ipv4.ip_local_port_range = 32768 61000
如上命令显示"最小最大值",因此新连接的本地端口将介于32768和61000之间,默认情况下28232个随机端口,看起来很多,但在繁忙的流量服务器的时候可能很容易达到这个限制。
对于繁忙的流量服务器,可以如下操作增加随机端口范围。
# sysctl -w net.ipv4.ip_local_port_range="15000 64000"net.ipv4.ip_local_port_range = 15000 64000
或者直接通过使用echo直接传递值给/proc目录下的文件。
echo "15000 64000" > /proc/sys/net/ipv4/ip_local_port_range
如果想要持久生效,并且重启不会失效,请将配置保存在/etc/sysctl.conf
的配置文件中。
# cat /etc/sysctl.d/net.ipv4.ip_local_port_range.confnet.ipv4.ip_local_port_range = 15000 65000
要了解服务器当前处理的会话数,请使用如下命令查看:
# ss -sTotal: 2933 (kernel 3131)
TCP: 43915 (estab 2655, closed 41080, orphaned 159, synrecv 0, timewait 41080/0), ports 30347Transport Total IP IPv6* 3131 - -
RAW 0 0 0
UDP 17 11 6
TCP 2835 2832 3
INET 2852 2843 9
FRAG 0 0 0# netstat -anp | more...
tcp 0 0 10.50.1.6:41205 10.50.1.10:80 TIME_WAIT -
tcp 0 0 10.50.1.6:42515 10.50.1.10:80 TIME_WAIT -
tcp 0 0 10.50.1.6:59845 10.50.1.10:80 TIME_WAIT -
请注意增加TCP端口范围,但有限制!
TIPS: 如果服务器有较多程序开放端口,请注意程序的端口开放范围,以避免随机端口跟设置的端口范围冲突。
比如如下场景:
1. 多服务程序在一台机器,会造成有的服务启动监听端口跟系统开放的端口范围冲突2. 比如有的服务随机端口去连接zookeeper,如果这个随机端口跟本机服务监听的端口冲突的话,就造成次服务连接zookeeper失败,从而会造成你意想不到的服务故障发生
如上的一些场景尽量避免,可以根据业务情况设置不同的开放端口范围。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode977-双指针】有序数组的平方
- springboot分布式之springcloud-Eureka注册中心
- c++之类模板成员函数创建时机
- vuejs之v-on小例子之实现购买数量的增加和减少
- c++之类模板对象作函数参数
- vuejs之v-for
- c++类模板与继承
- c++之类模板成员函数的类外实现
- c++之类模板分文件编写
- c++之类模板和友元
- c++之类模板案例
- 【ICLR2020】Transformer Complex-order:一种新的位置编码方式
- 多角度理解CNN
- 【NLP保姆级教程】手把手带你CNN文本分类(附代码)
- 【NLP保姆级教程】手把手带你RNN文本分类(附代码)