排除法,先找客户端问题,再找服务端问题

简介: 先找客户端问题,再找服务端问题

正文


前阵子做分布式数据库的运维工作,因为一些客观原因(客户现场无法远程),客户找我们解决一个:“大数据量时查询不全数据的问题”。


这个问题涉及到的软件是:C# 数据库驱动、JDBC 驱动、数据库服务端。

在最开始的时候,我们和客户沟通,拍脑袋以为是 C# 驱动的问题,结果又是查日志,又是查 C# 驱动源码,还是解决不了问题,认为是数据库服务端有问题。

我把现象反馈给大领导,大领导说:“不是有 JDBC 驱动嘛,你把客户端的问题都排除了,再来找服务端的问题!”(大领导工作很忙,所以找他解决问题时,一些打下手的工作,我们得尽可能多的去完成,比如这次的定位问题)。

从技术面看,大领导说的很对,细细想来:有两个驱动程序,如果是数据库服务端问题,那么不但使用 C# 驱动能复现问题,使用 JDBC 驱动也可以复现问题的!

在找大领导前怎么没想到呢?可能是因为之前没遇到过这种问题吧,维护 C# 驱动的工程师想着大领导能兜底,能把问题抛给大领导就抛给他。其实,这也是运维中定位问题时常用的排除法,看来平时还是得多总结的。

于是,我用 Java 写了个程序,使用 JDBC 驱动把问题终于踏踏实实得定位到了服务端。


PS:为什么要先找客户端问题,再找服务端问题?因为,服务端相对客户端而言更抽象一点,越抽象,细节就越少,犯错的可能性会小很多。(当然了,服务端也是有细节的,某些地方比客户端细节更细,这里就不讨论了)


目录
相关文章
|
7月前
|
网络协议 算法 Linux
服务端如何准备连接
【4月更文挑战第1天】服务端创建套接字涉及`socket()`函数。
|
JavaScript
HTTP/2 协议-服务端主动推送消息
HTTP/2 协议-服务端主动推送消息
409 0
|
存储 JSON 网络协议
ElasticsearchRestTemplate客户端使用
ElasticsearchRestTemplate客户端使用
|
5月前
|
前端开发 Java Maven
使用 @GrpcClient 实现客户端
使用 @GrpcClient 实现客户端
63 0
|
7月前
|
存储 JSON 监控
源码分析Zabbix客户端如何向服务端发起请求
源码分析Zabbix客户端如何向服务端发起请求
77 2
|
网络协议 Cloud Native
为什么服务端会有那么多的 TimeWait ?
为什么服务端会有那么多的 TimeWait ?
|
安全 小程序 JavaScript
客户端与服务器
客户端与服务器
94 0
客户端与服务器
|
存储 缓存 关系型数据库
1.6 服务器处理客户端请求
1.6 服务器处理客户端请求
78 0
使用WebSocket实现服务端和客户端的通信
使用WebSocket实现服务端和客户端的通信
91 0