云平台DNS故障导致网站访问卡顿异常排查过程,wireshark、strace等工具在实际问题排查过程中的应用方法

news2024/11/17 7:45:42

一、问题现象

        项目上使用华为私有云,前段时间华为升级云平台后,云上用户反馈业务系统出现卡顿,之前几秒可以刷新出来的页面现在需要几十秒。提供了一个比较明显的url和curl调用方法。

10.213.x.xxx:8082/files/login

curl -H "Content-Type: application/json" -H "Tenantcode: XHASZJZXT-370211"  -H "token: xxx" http://localhost:9705/records/dzda/getArchivementMenu?attachCode=JSGC&keyGuid=xxx

二、应用架构分析

        1、登录10.213.x.xxx,根据应用提供的端口号定位到8082端口是个nginx服务(netstat -anp|grep 8082),并且获取到进程id:30923:

        

        使用lsof -p 30923,定位到nginx的安装路径和日志位置:

        

        进入安装路径,可以找到nginx的配置文件路径conf:nginx的配置文件一般是nginx.conf

        

        查看nginx.conf,找到端口号为8082的配置,可以看到不同的后缀其实指向不同的服务。

        

        根据出问题的url找到的后端服务地址和端口,继续通过netstat -anp查找对应的进程id:

        

        执行ps -ef|grep 48420查看java进程的执行信息:可以看到java的配置文件位置、日志位置等信息。

        

        从配置文件中可以看到数据库、redis、ftp等其他关联服务的信息。

        

三、问题排查

        1.分别在跳板机、同段windows主机、同段linux主机上测试,都存在卡顿现象,可以暂时排除边界网络设备的问题;

        2.在跳板机进行测试,开始wireshark抓包,根据IP和端口过滤数据包信息(ip.addr == 10.213.x.xxx and tcp.port == 8082):

        可以看到打开页面后,跳板机给10.213.x.xxx:8082发送了一个GET请求,具体路径是/records/dzda/getArchivementMenu,但是隔了20多秒才收到回包。

        

        3. 同时在跳板机使用wireshark抓包,10.213.3.159上使用tcpdump抓包,并使用tail -f刷新nginx的access.log:

        跳板机发送GET包后,10.213.3.159马上就接收到了。但nginx access日志中出现GET请求的记录要比跳板机发包晚20多秒,并且日志中出现记录后,页面马上打开了。

        

        此时怀疑在159上,在nginx之前还有其他进程阻断了GET请求,排查了redis等服务后,没有发现异常;又百度查了下nginx的机制,access.log中只有请求被正常响应后才会记录该请求,所以nginx刚接收到GET请求并没有记录access日志,要等到后端的服务有正常返回后才进行记录。所以延时应该是产生在java服务处理请求的过程中。

        4. 根据GET请求里面的url后缀:/records/dzda在nginx配置文件中定位到后端的java服务端口是9705。

        

        查到java进程信息和日志位置:/hst/api/records/api/log

        

        5. tail java日志,同时测试异常网站,发现一访问网站就有日志产生,说明nginx第一时间转发给了java进程,但在一些步骤等待时间很长。

        

        6. 从日志中发现不了具体卡在什么调用上,这时可以用strace追踪程序运行过程的各类系统调用:

跟踪文件调用:

        strace -tt -T -v -f -e trace=file -s 1024 -p 48420

可以看到进程打开resolv.conf和/etc/hosts文件后卡住,判断是程序中存在域名,在解析时卡住。

跟踪网络调用:

        strace -tt -T -v -f -e trace=network -s 1024 -p 48420

        

        查到需要解析的域名(主机名)为本机的hostname:host-10-213-3-159

        直接ping host-10-213-3-159进行测试,发现同样需要十几秒才能解析出本机IP。

        

        在ping的同时抓dns 10.255.89.8的包,发现域名解析请求发送后会延时几秒后才收到dns服务端(10.255.89.8)返回的server failure的包。

        

        同时在华为云互联网区主机上ping主机名或其他无法解析的域名,dns服务器会马上返回no such name的回包。

        

        可以确定问题原因是因为华为云DNS(10.255.89.8)解析未知域名时出现异常,无法快速返回无法解析的信息,导致程序一直在等待解析。

四、问题解决

        在/etc/hosts 中添加一行,指定host-10-213-3-159对应的IP:10.213.3.159,网站访问正常。

        

        或者把/etc/resolv.conf中dns记录注释掉也可以,但可能影响华为云其他服务。

  • 后续跟进

        华为云金宏网的主机默认配置的dns都是云内dns 10.255.89.8/9,其他主机上的程序如果在代码中存在域名的调用也会出现类似的卡顿现象,需要华为尽快修复dns服务器解析卡顿问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1818023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泰迪智能科技携手广西科技大学理学院共建“上进双创工作室”

6月12日,广东泰迪智能科技股份有限公司携手广西科技大学理学院在泰迪智能科技产教融合实训中心举行“上进双创工作室”签约揭牌仪式,标志“泰迪科技广西科大上进双创工作室”的正式启动。 仪式由泰迪智能科技运营中心总监翁梦婷主持。广西科技大学理学院…

使用 Elasticsearch 设计大规模向量搜索

作者:Jim Ferenczi 第 1 部分:高保真密集向量搜索 简介 在设计向量搜索体验时,可用选项的数量之多可能会让人感到不知所措。最初,管理少量向量很简单,但随着应用程序的扩展,这很快就会成为瓶颈。 在本系列…

ATA-3040C功率放大器的正确使用方法

功率放大器是一种用于增强电信号功率的重要设备。正确使用功率放大器可以确保信号的稳定放大,并避免设备损坏。下面将介绍功率放大器的正确使用方法。 确定输入信号的功率范围:在使用功率放大器之前,需要确定输入信号的功率范围。过大的输入功…

白酒:茅台镇白酒的品牌故事与传奇色彩

茅台镇,这个位于中国贵州省遵义市仁怀市的小镇,因为出产的白酒品质卓着,被誉为“世界名酒之乡”。在这片神奇的土地上,云仓酒庄以其豪迈白酒,书写了一段段品牌故事与传奇色彩。 云仓酒庄豪迈,酿造于茅台镇的…

shell文本三剑客 awk 和 grep

awk 前言 AWK是一种优良的文本处理工具。它不仅是 Linux中也是任何环境中现有的功能最强大的数据处理引擎之一。 Linux中最常用的文本处理工具有grep,sed,awk。行内将之称为文本三剑客,就功能量和效率来看,awk是当之无愧的文本三…

取模软件测试版生成的有斜线,但测试字库的功能是好用无限制。只需要自己开发一个字库生成软件。IDA工具,如何搜中文

IDA工具,如何搜中文 在 IDA (Interactive Disassembler) 中搜索中文字符串,可以按照以下步骤操作: 方法一:使用“搜索文本”功能 打开 IDA 并加载目标文件:启动 IDA 并打开你需要分析的二进制文件。打开搜索文本对话…

厨房燃气安全新保障:红外点式可燃气体报警器的作用

在现代家庭生活中,厨房的安全问题日益受到人们的关注。其中,燃气泄漏和火灾是厨房安全的主要隐患。 据统计,90%的火灾源于燃气泄漏,而厨房又是燃气使用最为频繁的区域。因此,一款高效、可靠的可燃气体报警器对于保障家…

原生JS如何实现可配置DM码

原生JS如何实现可配置DM码 一、 DM码简介 1、 Data Matrix码 Data Matrix码是一种二维条形码,简称DM码,由美国公司International Data Matrix, Inc.(I.D. Matrix)在1994年发明,Data Matrix码中的行数和列数随二维码中存储的信息量而增加,信息限值是2335个字母数字字符…

LangChain 与 Elastic 合作为 RAG 添加向量数据库和语义重排序

作者:来自 Elastic Max Jakob 在过去的一年中,我们看到了生成式人工智能领域的许多进展。许多新服务和库应运而生。LangChain 已成为使用大型语言模型 (LLM) 构建应用程序的最受欢迎的库,例如检索增强生成 (RAG) 系统。该库使原型设计和试验不…

汇凯金业:黄金5g工艺是什么意思

黄金5g工艺是一种新型黄金饰品工艺,它在生产加工过程中,通过在黄金中添加一定量的稀有元素,使得黄金的分子结构更加紧密。这种创新工艺不仅提升了黄金的纯度,还改善了其物理特性,使其成为市场上一种备受关注的黄金饰品…

到底要不要报考“通信工程”?(2024版)

又到了高考季。为了方便广大考生全面了解“通信工程”专业,小枣君特此更新了这篇经典文章。 █ “通信工程”的基本介绍 通信工程,英文全称叫做Communication Engineering,是一门重要的工学基础学科。 根据教育部《学位授予和人才培养学科目录…

LLM主要类别架构

LLM主要类别架构介绍 LLM主要类别 LLM本身基于transformer架构。自2017年,attention is all you need诞生起,transformer模型为不同领域的模型提供了灵感和启发。基于原始的Transformer框架,衍生出了一系列模型,一些模型仅仅使用…

Java版电子招标采购系统源码:实现企业采购战略与流程的数字化革新

随着企业的发展,内部采购管理面临着日益增长的挑战。为了提升采购效率,确保采购过程的透明性和公正性,企业需要一个高效、规范的电子招标采购系统。鸿鹄电子招投标系统正是为此而设计,它采用Java技术,结合先进的微服务…

5.冒泡+选择+插入+希尔

一、排序算法 排序基础 1.排序算法的稳定性 2.何为原地排序算法 1.冒泡排序 从下面第一个元素开始往上冒泡,一轮冒泡下来,最大的元素就去了最上面了 步骤:无序数组 每次冒泡都可以将最大的元素放到最右边去 第一轮比较了5次:…

3D数字化营销——电商行业提升转化率,降低退货率的杀手锏!

随着3D、AR等前沿技术的蓬勃发展,电商行业正迎来一场3D数字化营销的革命。这种创新的营销方式不仅极大地丰富了商品的展现形式,还成功弥补了传统电商在临场感和体验感方面的不足,从而显著提升了消费者的购物体验。 51建模网为电商行业提供3D…

C++:十大排序

目录 时间复杂度分析 选择排序 引言 算法思想 动图展示 代码实现 (升序) 优化 代码实现 分析 冒泡排序 引言 算法思想 动图展示 代码实现 插入排序 引言 算法思想 动图展示 代码实现 计数排序 引言 算法思想 动图展示 代码实现 桶排序 引言 算法思…

python学习—合并多个Excel工作簿表格文件

系列文章目录 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停,游戏抽签抽奖 python学习—循环语句-控制流 文章目录 系列文章目录功能说明1 准备工作&#…

Python内存管理与垃圾回收机制

目录 一、引言 二、Python内存管理概述 三、引用计数机制 四、垃圾回收机制 标记-清除(Mark-and-Sweep) 分代收集(Generational Collection) 五、内存泄漏与优化 六、总结 一、引言 Python作为一门高级编程语言&#xff…

基于Java技术的ERP管理系统:企业资源规划的先进解决方案

在当前数字化转型的趋势下,企业对于高效、稳定且具备扩展性的管理系统的需求日益增加。为了满足这一需求,我们开发了一款基于Java技术的鸿鹄ERP(企业资源规划)管理系统。该系统采用了Spring Cloud Alibaba、Spring Boot、MybatisP…

ArrayList浅析

目录 一、ArrayList源码1.1 迭代器1.1.1 Itr源码浅析1.1.2 ListItr源码浅析 1.2 常用方法1.3 System.arraycopy1.4 ArrayList 的创建方式 二、引申问题2.1 ArrayList的大小是如何增加的?2.2 什么情况下你会使用ArrayList2.3 在索引中ArrayList的增加或者删除某个对象…