PHP警告:mysqli :: mysqli():(HY000 / 2003):无法连接到“77.777.120.81”上的MySQL服务器(99)/ usr / local / dev / classes / Admin.php的第15行
无法连接到MySQL:无法连接到“77.777.120.81”上的MySQL服务器(99)
PHP警告:mysqli :: mysqli():(HY000 / 2003):无法连接到“77.777.120.81”上的MySQL服务器(99)/ usr / local / dev / classes / Admin.php的第15行
无法连接到MySQL:无法连接到“77.777.120.81”上的MySQL服务器(99)
通过将/proc/sys/net/ipv4/tcp_tw_reuse设置为1,可以强制内核重用处于TIME_WAIT状态的连接。实际上会发生什么是,您将继续看到挂起在TIME_WAIT中的关闭连接,直到它们过期或请求新连接。对于后一种情况,连接将被“恢复”。
启用/proc/sys/net/ipv4/tcp_tw_recycle后,关闭的连接将不再显示在TIME_WAIT下-它们完全从netstat中消失。但是,只要您在60秒内打开一个新连接,它就会回收其中的一个。但是,每个写有关此替代方案的人似乎都建议不使用它。底线是:最好重用连接而不是回收它。
该参数规定了同时可以保持在TIME_WAIT状态的连接数量:当连接数量超过这个限制时,内核会直接关闭处于TIME_WAIT状态的连接。例如,在一个仅由6个端口组成的TCP端口范围的服务器场景中,如果
/proc/sys/net/ipv4/tcp_max_tw_buckets
设置为5,则打开6个与MySQL的并发连接,并立即关闭所有6个连接,你会发现只有5个连接处于TIME_WAIT状态。与tcp_tw_recycle
一样,其中一个连接将从netstat
输出中消失。这种情况允许立即打开新连接,而不需要等待一分钟*。
- 在连接数据库服务器方面,许多应用程序选择仅针对单个请求打开一个新连接,并在处理完请求后立即关闭该连接。尽管连接是由客户端(应用程序)关闭的,但它使用的本地端口不会立即被操作系统释放以便另一个连接重复使用:它将在TIME_WAIT状态下保持(通常为)60秒——这个值不容易更改,因为它是硬编码在内核中的。
但是,在其他5个处于TIME_WAIT状态的连接之一过期并释放它所使用的本地端口之前,第二个连接将无法打开。因此,秘密在于在可用网络端口数量和允许保持在TIME_WAIT状态的连接数量之间找到折衷。该设置的默认值为65536,这意味着默认情况下当所有连接关闭时,系统允许所有可能的连接进入TIME_WAIT状态。
更新1:
tcp_tw_reuse
看起来是更好的解决方案。这里描述了为什么:
原始答案:
mysql错误(99) 表示您的tcp端口用尽。
启用tcp recycle应该可以解决问题。
echo 1 >/proc/sys/net/ipv4/tcp_tw_recycle
积分.
tcp_tw_reuse
. 我已经更新了答案并添加了一个参考,描述哪种解决方案更好。 - Jordan Enev