【发布时间】:2018-06-11 03:06:41
【问题描述】:
错误:
mysqli_real_connect(): (HY000/2002): 每个socket只使用一次 地址(协议/网络地址/端口)通常是允许的。
但是,我似乎有足够的端口。
详情:
我有一个MySQL 服务器已经运行了几个月没有问题。我正在运行 Windows 10、PHP 7.0 和 MySQL 5.7。这是一个繁忙的服务器,每小时处理大量事务。
大约一个星期以来,我收到了过多的:
mysqli_real_connect(): (HY000/2002): 每个socket只使用一次 地址(协议/网络地址/端口)通常是允许的。
我已经尝试了常见的建议,这些建议在其他机器上对我有用。
TcpTimedWaitDelay = 30 and MaxUserPort = 65534
我还添加了:
TcpNumConnections = 16777214 and TcpMaxDataRetransmissions = 5.
我可以通过 netsh 确认最大端口和超时。此外,当我运行 netstat /abno 时,我始终看到使用的端口少于 1000 个。但是,我仍然收到上述错误。所以看起来机器甚至没有使用所有的端口。
在我的.ini 中,我有一个connection limit of 10,000。
【问题讨论】:
-
更新:通过更积极地重用数据库连接和合并查询,我能够显着减少问题。但是,我仍然不知道为什么我会在明显充足的可用 TCP 端口上达到极限。