mysql报错:2003, "Can't connect to MySQL server on ' ' [Errno 99] Cannot assign requested address 解决方法

本文探讨了在高并发环境下连接Mysql数据库时出现的连接超时问题,分析了其根本原因在于TIME_WAIT状态的连接过多,消耗了服务器端口资源。提出了包括减少高并发连接、调整端口范围、启用TCP时间戳支持及快速回收机制在内的解决方案。
部署运行你感兴趣的模型镜像

背景

使用Python脚本高并发的连接Mysql数据库时遇到了此报错。
但是场景不仅限于Python,其它程序在高并发连接Mysql数据库时也可能会遇到此问题。

原因定位

出现该报错信息是因为在高并发连接Mysql数据库时,由于同时连接Mysql数据库的链接过多,且每次连接都是非常短的时间,导致有许多的TIME_WAIT,以致用光了服务器端口,所以新的连接就没有端口可用,导致了该报错产生。

我们可以看下当前端口占用的个数:
netstat -an|wc -l
在这里插入图片描述
也可以看下当前可用端口的范围:
cat /proc/sys/net/ipv4/ip_local_port_range
在这里插入图片描述

解决方法

1

知道了原因,最好的解决方法是减少这种高并发的连接,由于是每次连接的处理时间较短时,不然很容易出现这种问题。

2

修改可用端口的范围
echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

3

查看内核的时间戳支持:
cat /proc/sys/net/ipv4/tcp_timestamps
如果是0,则修改为1。开启对于TCP时间戳的支持。
运行sysctl -w net.ipv4.tcp_timestamps=1

查看是否开启快速回收:
cat /proc/sys/net/ipv4/tcp_tw_recycle
如果是0,则修改为1。开启TCP连接中TIME-WAIT sockets的快速回收。
运行sysctl -w net.ipv4.tcp_tw_recycle=1

修改tcp_max_tw_buckets
运行sudo sh -c "echo '5000'> /proc/sys/net/ipv4/tcp_max_tw_buckets"

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

### HTTPX 连接错误解决方案 当遇到 `httpx.ConnectError` 错误提示 `[Errno 99] Cannot assign requested address` 时,这通常意味着操作系统无法找到可用的本地端口来建立新的网络连接[^4]。 对于此类问题的一个常见解决办法是调整操作系统的参数设置以增加可使用的端口号范围。可以通过修改 `/proc/sys/net/ipv4/ip_local_port_range` 文件中的配置实现这一点: ```bash sudo echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range ``` 上述命令将允许更广泛的端口被用于新建连接,从而可能缓解由于端口耗尽引起的问题。 另外一种可能是防火墙或其他网络安全策略阻止了某些特定IP地址或端口上的通信尝试;因此建议检查并适当放宽这些限制条件(如果安全政策允许的话)。同时也要确认目标服务确实正在监听预期的主机名/IP 地址以及相应的端口上,并且该位置可以从当前设备访问到[^1]。 为了进一步排查问题所在,还可以考虑使用工具如 `netstat`, `ss` 或者 `lsof` 来查看是否有过多处于 TIME_WAIT 状态的TCP连接占用资源,必要时通过降低TIMEOUT时间等方式加快释放不再需要的半开连接[^3]。 最后,在编写应用程序代码方面,应当合理控制并发量大小,避免一次性创建过多未完成的任务实例而导致系统资源过载。例如采用异步I/O模型配合合适的最大并发数限制能够有效提高效率的同时减轻对底层网络设施的压力[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值