生产问题分析(数据库连接池问题)

796 阅读1分钟

问题现象: 业务通过域名访问生产环境反馈有时候正常,有时候特别卡,页面一直没有响应。

问题分析: 生产环境应用服务器有6个节点,通过应用服务器访问,逐个排查,发现有台服务器反应很慢。页面报错为: Connection not available;time out waiting for 180,000 seconds.

业务通过域名访问,F5随机转发,如转发到有问题的应用服务器上,跟业务反馈的现象一致。

报connection连接超时,有以下可能:

  • 1、数据库宕机,连接不上;
  • 2、应用服务器中数据库连接池无可用连接;

目前其他应用服务器连接的是同一个数据库,且能够正常使用,因此可以排除第一种可能; 查看数据库连接池连接情况,目前FreePoolSize(可用连接)为0,PoolSize(连接池连接)只有10; 因此可以判断是第二种可能。 微信截图_20210515225351.png

解决方案

  • 1、增加连接池连接; 虽然目前是因为连接数太少,导致缺少可用连接。但也不能盲目扩大。 跟DBA沟通,结合目前数据库连接负载情况,建议连接池设置的值为20-100。又因为有6台应用服务器,因为调整连接池连接数为20;
  • 2、查看是否有没有关闭的连接,以及是否存在慢sql; 查看sql session,发现确实有部分sql一直在执行,因为数据量太大,没有执行完毕。联系业务以及DBA,先kill掉session,并拉取sql对其优化。