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

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

故障的表现

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

pinpoint错误请求数及其分布

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

问题排查

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

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

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

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

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

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

总结

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

相关推荐
SPC的存折1 分钟前
MySQL 8.0 分库分表
linux·运维·服务器·数据库·mysql
回家路上绕了弯5 分钟前
Git worktree 终极指南:告别分支切换烦恼,实现多分支并行开发
git·后端
@atweiwei9 分钟前
用 Rust 构建agent的 LLM 应用的高性能框架
开发语言·后端·rust·langchain·eclipse·llm·agent
skilllite作者12 分钟前
Spec + Task 作为「开发协议层」:Rust 大模型辅助的标准化、harness 化与可回滚
开发语言·人工智能·后端·安全·架构·rust·rust沙箱
懒得起名_yyf12 分钟前
Http---详细格式介绍
后端
程序员cxuan16 分钟前
今天看到很多人讨论 Linux 终于要接受 AI 提交的代码了,我的第一反应是,真的吗?作为喷 AI 最狠的祖师爷到底咋看这件事儿?
后端·程序员
何陋轩18 分钟前
GitHub Copilot深度使用指南:手把手教你在IDEA中榨干AI生产力
人工智能·后端
风吹迎面入袖凉18 分钟前
【Redis】Redisson分布式锁原理
java·服务器·开发语言
fish202618 分钟前
车载日志限流稽查系统
后端
云边有个稻草人18 分钟前
NFS 环境 KES 安装 Operation not permitted 报错排查 + 最佳实践
后端