首页 > 其他分享 >网络之谜:记一次失败排查的故事

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

时间:2023-11-15 09:11:06浏览次数:30  
标签:错误 故障 问题 排查 失败 监控 我们 之谜

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

故障的表现

首先,让我们回顾一下故障的表现。在客户端调用接口时,发现一直在转圈等待,而服务器端却收到了请求并在返回结果给客户端时报了一些错误,包括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文件。这使得我们无法深入了解故障的具体原因。因此,我们建议在类似的情况下,提前准备好足够的监控工具和技术手段,以便更好地进行故障排查。

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

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

总结

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

标签:错误,故障,问题,排查,失败,监控,我们,之谜
From: https://www.cnblogs.com/guoxiaoyu/p/17811098.html

相关文章

  • EB-tresos安装完成后,导入项目工程失败的解决方法
     1.导入项目例程选中文件后,出现了两行报错,没法去进行Mcal配置。  2.找到例程的文件夹,点进MCAL后再点入EB_Plugins文件夹,点击上面的路径,可以Ctrl+C复制到剪贴板。  3.找到EB软件的安装路径,打开tresos文件夹,在打开links文件夹,双击里面的link后缀文件,用记事本打开。......
  • git拉取失败问题
    错误提示:ITISPOSSIBLETHATSOMEONEISDOINGSOMETHINGNASTY!Someonecouldbeeavesdroppingonyourightnow(man-in-the-middleattack)!Itisalsopossiblethatahostkeyhasjustbeenchanged.ThefingerprintfortheRSAkeysentbytheremotehostisSHA25......
  • 解决 keras 首次装载预训练模型VGG16 时下载失败问题
    解决:Exception:URLfetchfailureonhttps://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5:None--[Errno104]Connectionresetbypeer解决方案:1、先将数据集单独下载下来:models/vgg16_weights_tf_d......
  • requests 在 Python 3.2 中使用 OAuth 导入失败的问题与解决方案
    问题背景在Python3.2中,尝试使用Request的OAuth支持时,遇到了OAuth导入失败的问题。以下代码:importrequestsfromrequests.authimportOAuth1url='https://api.twitter.com/1/account/settings.json'queryoauth=OAuth1('client_key','client_secret',......
  • 郑州得鱼心理咨询:面对困难和失败,家长怎么引导孩子
    在孩子成长道路上,面对困难和失败是难以避免的挑战。作为家长,我们肩负着引导孩子应对挫折的重要责任。郑州得鱼心理咨询老师指出:如何在孩子面对困难和失败时给予正确的引导,帮助他们变得坚韧、乐观并具备解决问题的能力,是我们需要认真思考和积极应对的问题。首先,我们应该教导孩子接......
  • 加载网络映射盘中的assembly失败的处理办法
     2023年11月14日10:36:28有群友提出这样的问题:我在客户的机器安装插件后,报这个错,大概会是什么原因的?按照提示信息,打开微软的网页:http://go.microsoft.com/fwlink/?LinkId=155569同时也搜索到了这篇文章:https://www.cnblogs.com/1175429393wljblog/p/5065559.html上面这......
  • 服务器变动后 vscode远程连接失败
    参考:https://developer.huawei.com/consumer/cn/forum/topic/0203853369117070036删除C:\Users{用户}.ssh\known_hosts下的对应远程机器信息哪个服务器变动就把那一行删除,保存文件,在vscode中重新连接即可。......
  • Xcode15 下载 iOS 17.0.1 Simulator 失败
    更新完Xcode15,启动后自动下载iOS17.0.1Simulator,总是下载失败,可以到苹果官网去网页下载,地址:https://developer.apple.com/download/all/ 下载完之后,终端安装:xcode-select-s/Applications/Xcode.appxcodebuild-runFirstLaunchxcrunsimctlruntimeadd"~/Downloads/i......
  • 金蝶云星空二开单据明细按钮绑定了权限项但是没控制到权限的问题排查
     明细按钮:行关闭和行反关闭,分别绑定了SCM_ROWCLOSE和SCM_ROWUNCLOSE 绑定这个,不管授权与否,都可操作成功。 解决方案:创建新的权限项 权限对象绑定权限项 BOS界面配置  授权后即可正常操作。已达到目的。......
  • 使用 npm 的配置参数 script-shell 来避免 window 执行脚本失败
    在Node.js的生态系统中,npm是一个非常重要的组件。npm,全称NodePackageManager,是Node.js的默认包管理器。它帮助开发者很容易地安装、更新、删除或管理Node.js项目中所需要的依赖包。npm能够在本地环境或者全局环境中安装Node.js模块,还提供了很多命令和特性,帮助开发者......