【DB2】克隆环境IP不同,DB2连接为何从10ms变20秒?

背景

接到客户求助,说有一个环境进行了克隆,克隆后的环境使用DBeaver链接要20s,原本环境是10ms,需要分析链接慢原因

定位

首先确定两个环境真的是除了IP完全一模一样,排查了/etc/hosts,db2nodes.cfg等文件,没有任何区别

为了确保不是数据库本身问题,在linux中进行连接,都是很快的连接成功

接下来怀疑网络问题,在windows对两个环境进行ping测试,延迟都很低,网络也没问题

怀疑是克隆出的实例有问题,对连接慢实例进行更新

powershell 复制代码
su - db2inst1
db2stop force
su - root
db2iupdt db2inst1

更新实例后,重新连接测试,还是很慢

真凶

排查所有外界因素后,还是没有头绪,只能查看下日志

db2diag -f 查看日志后发现连接慢的有大量密码错误报错

(本地测试环境复现)

通过db2top查看两边连接数,差距很大

怀疑就是连接数太多导致阻塞影响

将svcename修改,防止应用连接,连接变得很快

由此确认是大量连接密码错误涌入连接池,导致连接池阻塞

思考

因为现象太具有迷惑性了。两个环境"一模一样",只是IP不同,很自然地会先怀疑网络、DNS、认证这些跟IP强相关的因素。而连接池阻塞这个根因,和"改IP"这件事看起来毫无关联,容易被忽略。

这次排查让我深刻体会到:当所有常规路径都走不通时,一定要回到最原始的手段------看日志。 很多时候,真相就藏在被忽略的细节里。