解决Linux系统因TCP端口不足导致mysql数据库无法访问的问题

在linux系统上运行批处理程序的时候,出现以下mysql连接错误

java.net.NoRouteToHostException: Cannot assign requested address

主要是因为批处理程序是多线程的,大量的数据库连接导致tcp端口耗尽。
对于Linux的客户端,通过调整几个操作系统内核参数可以解决这个问题。

net.ipv4.tcp_syncookies=1   # 开启SYN Cookies。当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN攻击
net.ipv4.tcp_tw_recycle=1   # 开启TCP连接中TIME-WAIT套接字的快速回收
net.ipv4.tcp_tw_reuse=1     # 开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接
net.ipv4.tcp_timestamps=1   # 减少time_wait
net.ipv4.tcp_tw_timeout=3   # 收缩TIME_WAIT状态socket的回收时间窗口

主要有两种配置方式:
1,命令行

echo "1" >/proc/sys/net/ipv4/tcp_tw_reuse
echo "1" >/proc/sys/net/ipv4/tcp_tw_recycle

通过命令行配置后,如果服务器重启,配置会丢失。

2,配置文件
打开/etc/sysctl.conf,添加以下内容,

net.ipv4.tcp_tw_recycle=1 
net.ipv4.tcp_tw_reuse=1

然后运行sysctl -p命令使配置生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值