本文已参与「新人创作礼」活动,一起开启创作之路。

问题描述

某研发中心的工程师反馈测试环境Oracle数据库连接慢,影响系统应用,已联系过数据库管理员,反馈数据库正常,后怀疑网络慢、卡顿造成,上报问题至网络。

随之接锅

问题分析

经初步沟通,在系统特定操作下,故障现象必现(这样的问题比起偶发问题好分析多了)。随之基操,长 ping 确认下网络延时、抖动,均确认正常。之后建议直接抓包分析,问题复现完整过程中同时抓包,看下有什么问题:

tcpdump -i 5 -en host x.x.x.x -w test.pcap

如下图,数据交互包并不多,问题原因也比较清晰:

  1. TCP三次握手(1-3)正常, 往返网络时延正常;
  2. 建连之后的数据交互,包括 Requset 和 Response 也基本正常,一直到数据包(19-20);
  3. 客户端数据包 21 (Requset) 开始,问题发生,服务端未及时 Response 数据,只是通过数据包 22 (ACK)确认了数据包 21 ,到数据包 23 响应数据,到客户端收到时已经耗时了7秒时间。

Wireshark TS | 测试数据库响应慢

TCP流图形-时间序列(Stenves),数据包 22-23 之间的间隔,图示明显。

Wireshark TS | 测试数据库响应慢

问题结论

如上问题分析,基本判断为 Oracle 数据库服务器问题,之后反馈给数据库管理员,经详细排查 Oracle log ,确认为 Oracle 数据库执行中 DNS 解析问题,造成响应数据慢。后续修改系统配置后,业务恢复正常。