我有一个与MySQL连接池的应用程序。 在某种程度上,在生产中,每隔1-3秒钟closures一些sockets。 结果我的应用程序重新启动这个连接。
这是30个连接/应用程序服务器与MySQL的单个实例交谈的相当大的池。 总的来说,数据库端可能有1000个连接。
当我重新启动应用程序过程时,问题就消失了。 我寻找连接到套接字,文件描述符,内核的一些原因。应用程序每秒打开和closures〜10-30连接,以便有大约4-5k的传入连接。
如何避免它?
lsof -nPi tcp
报告大约5k连接(和正确的传出到mysql的数量)。
/proc/sys/net/ipv4/ip_local_port_range
显示10k到60k的端口可用
ulimit -n设置为高数(100k)
Vmstat显示没有交换。 我在50%的CPU和25%的内存。
接下来我可以检查什么? 如何解决它?