我的 netstat 显示超过 2,000 个 mysql 连接,其 TIME_WAIT 状态似乎被卡住并且不会消失。几个小时以来都是这样,许多连接来自一个对我的数据库服务器没有权限的 IP 地址。好像挂了,怎么清除?这是蛮力攻击吗?我所有的用户权限都有特定的主机,我不使用任何通配符。
这是netstat的片段:
tcp 0 0 server:mysql static.98.17.76.1:45222 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:34341 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:51888 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:54459 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:49599 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:50751 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:50731 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:54658 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:58974 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:33800 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:59840 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:53495 TIME_WAIT
tcp 0 0 server:mysql static.98.17.76.1:51561 TIME_WAIT
另外,我在 mysql 中的 PROCESSLIST 没有显示这些连接,所以我认为它们会立即被删除,但不确定为什么它们不会消失。这会导致 mysql 的最大连接数出现任何问题吗?
如果
netstat
在 state 的 output 中发现一些连接TIME_WAIT
,这可能是正常的。当您有太多短暂的联系时,您可能会获得太多这些。即使不需要提供任何用户名、密码或数据库名称,我也得到了其中的一些。只需输入:
你会得到一个左连接
TIME_WAIT
状态:但是,建议拒绝来自此 IP 的访问,尤其是在您不将此 IP 识别为合法客户端的情况下。像这样的简单 iptables 规则可以拒绝来自该 IP 的进一步请求:
根据您是否有其他规则,您可能需要更改
-A
为。-I