网络之谜:记一次失败排查的故事

简介: 【6月更文挑战第6天】文章详述了一次故障排查经历,故障表现为客户端接口调用延迟,服务器报错(Broken pipe和Connection reset by peer),Nginx连接数异常增加。通过pinpoint平台发现三种错误类型。排查过程涉及数据库、中间链路和第三方服务,但未找到根本原因。监控手段不足(如无法生成Java dump)和故障难以复现增加了难度。尽管最终靠重启服务暂时解决,但提出改进监控和提升故障排查技巧的重要性。总结中强调了故障排查的复杂性、所需专业知识及冷静分析的态度。

在这篇文章中,我们将详细探讨导致故障的可能原因以及解决方案,以便更好地理解故障排查的复杂性和艰巨性,尤其是当出现与本次故障表现相似的问题时。

故障的表现

首先,让我们回顾一下故障的表现。在客户端调用接口时,发现一直在转圈等待,而服务器端却收到了请求并在返回结果给客户端时报了一些错误,包括java.io.IOException: Broken pipe错误和Connection reset by peer错误。尽管整个查询链路所需时间并不长,大约在2秒左右,但通过使用grafana监控工具,我们发现Nginx的连接数超过了平时的6倍以上。尽管我们已经仔细检查了各个方面的原因,但仍未找到根本问题所在。但是,我们最终注意到重启服务可以解决问题,因此我们将目标问题的范围锁定在服务器端。

pinpoint错误请求数及其分布

image

Nginx当时的连接数:当时是个很正常日子,并没什么活动

image

问题排查

然而,为什么会出现这样的问题呢?主要原因在于监控手段不足,甚至无法生成基本的Java dump文件。在排查过程中,我们只能看到现象而无法找到具体原因。通过pinpoint平台(类似于skywalking),我们发现了三种基本错误。第一种是之前提到的java.io.IOException: Broken pipe,第二种是Connection reset by peer,第三种是服务器访问第三方服务器时出现的connection timeout或refuse connection错误。虽然之前也发生过类似的问题,但都是偶尔出现,并没有像这次一样数量如此之多,占用了访问量的1/10。因此,在出现问题时,我们没有立即重启,而是进行了仔细排查。然而,最终我们以失败告终,只能依靠重启来解决问题。如果你有任何想法,请在下方评论区留言。

首先,我们排除了一些问题,如数据库查询、中间链路的转发、第三方服务器的调用等,均未发现问题。尽管我们确实可以确定问题出在服务器节点上,但具体原因仍然是个谜。

在继续探索之前,让我们先了解一下故障排查的一般步骤。首先,我们需要收集足够的信息来了解故障的具体表现。这包括错误日志、监控指标、性能数据等。在本次故障中,我们已经通过监控工具获取了一些有用的信息。接下来,我们需要分析这些信息,并进行合理的假设和推断。我们还可以尝试在类似的环境中重现故障,以进一步观察和分析。当我们找到可能的原因时,可以进行一系列的测试和验证,以确定是否解决了问题。最后,我们需要记录和总结我们的调查过程,以便于日后的参考和经验积累。

在本次故障排查中,我们遇到了一些挑战。首先是监控手段不足的问题,由于JDK版本的问题导致无法生成Java dump文件。这使得我们无法深入了解故障的具体原因。因此,我们建议在类似的情况下,提前准备好足够的监控工具和技术手段,以便更好地进行故障排查。

另一个挑战是故障的复现。由于问题并非每次都发生,我们无法简单地通过重现来解决。在这种情况下,我们尝试了在生产环境协调客户获取账号,并确实复现了问题所在,最终确定了是某一个节点连接数飙高导致无法处理请求导致的,但是为什么会某一个节点单独飙高就不得而知。

最后,我们需要注意故障排查的方法和技巧。在排查过程中,我们应该保持冷静和耐心,避免盲目猜测和随意尝试。我们应该以科学的态度,根据收集的信息进行分析和推理,不断迭代和验证。同时,我们还应该注重团队合作和知识共享,通过不同的视角和经验来解决问题。

总结

总之,本次故障排查虽然以失败告终,但我们从中学到了很多经验和教训。故障排查是一项复杂而重要的任务,需要我们具备专业知识和技术手段。同时,我们还需要保持冷静和耐心,以科学的态度进行分析和推理。只有这样,我们才能更好地解决问题,并为日后的故障排查积累宝贵的经验。

相关文章
|
1月前
|
容器 Perl Kubernetes
深入 Kubernetes 网络:实战K8s网络故障排查与诊断策略
本文介绍了Kubernetes网络的基础知识和故障排查经验,重点讨论了私有化环境中Kubernetes网络的挑战。首先,文章阐述了Kubernetes网络模型的三大核心要素:Pod网络、Service网络和CNI,并强调了其在容器通信和服务发现中的作用。接着,通过三个具体的故障案例,展示了网络冲突、主节点DNS配置更改导致的服务中断以及容器网络抖动问题的解决过程,强调了网络规划、配置管理和人员培训的重要性。最后,提到了KubeSkoop exporter工具在监控和定位网络抖动问题中的应用。通过这些案例,读者可以深入了解Kubernetes网络的复杂性,并学习到实用的故障排查方法。
146309 18
|
23天前
|
Kubernetes 网络协议 Cloud Native
Kubernetes网络问题排查分享两则(1)——calico特定场景下的网络性能问题
在对Kubernetes项目[kosmos](https://github.com/kosmos-io/kosmos)与Calico网络性能进行对比测试时,发现kosmos在跨集群容器网络的性能显著优于Calico的集群内网络(约6Gbit/s对比2.9Gbit/s)。物理机网络测试达到9.38Gbit/s,显示Calico有68%的性能损耗。问题定位到网卡的checksum/offload参数,尝试用`ethtool`调整后虽短暂提升,但随后恢复原状。转载自:https://mp.weixin.qq.com/s/XsQZCSqZAXJK46zqc7IpLw
|
23天前
|
弹性计算 DataWorks 安全
DataWorks产品使用合集之打通网络时,如何排查安全组问题
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
18 1
|
2月前
|
运维 网络协议 Linux
【Linux】CentOS网络故障排查大揭秘: 实战攻略解读
【Linux】CentOS网络故障排查大揭秘: 实战攻略解读
|
2月前
|
运维 网络协议 Linux
【Linux】Linux网络故障排查与解决指南
【Linux】Linux网络故障排查与解决指南
|
2月前
|
域名解析 监控 网络协议
Linux 如何排查网络问题
确认基本网络连接 使用ping命令检查是否能够成功连接到互联网或目标主机。例如: ping www.google.com 查看网络接口状态 使用ifconfig或ip address show命令查看网络接口的状态。确认网络接口是否正常启用,并且是否分配了正确的IP地址。
77 3
|
2月前
|
网络协议 容灾 NoSQL
阿里云DTS踩坑经验分享系列|网络问题排查大法
在DTS的所有用户问题中,网络问题出现的概率居高不下,很大程度上是由于DTS的链路复杂性,从源数据库到DTS再从DTS到目的数据库,任意的一个部位发生网络不通、网络质量问题都有可能导致DTS任务的中断,或者延迟。本文希望以一种最简单的模型,简述DTS网络不通问题的排查方法,并给出一些简单的验证思路及手段,排查方向对了才能事半功倍。
109016 3
阿里云DTS踩坑经验分享系列|网络问题排查大法
|
2月前
|
域名解析 监控 Linux
排查网络-几个步骤 几款工具
先抛个问题,如果哪天突然发现IDC机房 和 公有云 之间的服务无法访问了(排除服务本身的问题之外,可能是网络不通,也可能是网络变的很慢使得资源无法及时下载,从而导致服务无法访问)。
|
2月前
|
安全 Unix Linux
Linux【问题记录 02】腾讯云 cron、sshd 进程CPU占用超95%(亡命徒 Outlaw 僵尸网络攻击)问题排查及处理步骤
Linux【问题记录 02】腾讯云 cron、sshd 进程CPU占用超95%(亡命徒 Outlaw 僵尸网络攻击)问题排查及处理步骤
102 0
|
9月前
|
网络架构 Windows
解决Windows 11网络连接问题:教你轻松排查网络故障
解决Windows 11网络连接问题:教你轻松排查网络故障
181 1

热门文章

最新文章