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

来源:互联网 发布:unity3d摇杆八方向 编辑:程序博客网 时间:2024/06/09 17:07

在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_waitnet.ipv4.tcp_tw_timeout=3   # 收缩TIME_WAIT状态socket的回收时间窗口

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

echo "1" >/proc/sys/net/ipv4/tcp_tw_reuseecho "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命令使配置生效。

阅读全文
0 0
原创粉丝点击