什么会导致管理连接池的 Linux 进程陷入不良状态,从而不断重新启动它们?

什么会导致管理连接池的 Linux 进程陷入不良状态,从而不断重新启动它们?

我有一个带有 MySQL 连接池的应用程序。在生产过程中,每隔 1-3 秒就会关闭某个套接字。因此,我的应用程序会重新启动此连接。

这是一个相当大的池,有 30 个连接/应用服务器与单个 MySQL 实例通信。数据库端总共可能有 1000 个连接。

当我重新启动应用程序进程时,问题就消失了。我查找与套接字、文件描述符、内核相关的某些原因。应用程序每秒打开和关闭约 10-30 个连接,以便拥有约 4-5k 个传入连接。

如何避免?

lsof -nPi tcp 

报告大约 5k 个连接(以及正确的传出到 mysql 的数量)。

/proc/sys/net/ipv4/ip_local_port_range

显示有 10k 到 60k 个可用端口

ulimit -n 设置为高数字(100k)

Vmstat 显示没有交换。我的 CPU 占用率为 50%,内存占用率为 25%。

我下一步该检查什么?如何修复?

相关内容