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

一、问题现象

        项目上使用华为私有云,前段时间华为升级云平台后,云上用户反馈业务系统出现卡顿,之前几秒可以刷新出来的页面现在需要几十秒。提供了一个比较明显的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.rhkb.cn/news/354623.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW开发指针式压力仪表图像识别

系统利用LabVIEW编程实现对指针式压力仪表的读取,通过相机、光源、固定支架等硬件捕捉仪表图像,并通过图像识别技术解析压力值。系统分为两个阶段:第一阶段固定相机更换仪表,第二阶段移动相机识别多个固定仪表。本文介绍硬件选择、…

Jenkins 发测试邮件报错 553 Mail from must equal authorized user

Jenkins 发测试邮件报错 553 Mail from must equal authorized user 报错信息报错原因解决办法 报错信息 org.eclipse.angus.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized user at org.eclipse.angus.mail.smtp.SMTPTransport.mailFrom(SMTPTra…

我工作中用Redis的10种场景

Redis作为一种优秀的基于key/value的缓存,有非常不错的性能和稳定性,无论是在工作中,还是面试中,都经常会出现。 今天这篇文章就跟大家一起聊聊,我在实际工作中使用Redis的10种场景,希望对你会有所帮助。 …

丹尼尔·T·琼斯:精益生产到底是什么?

本文摘要自《精益思想》、《改变世界的机器》作者之一丹尼尔T琼斯的文章。丹尼尔T琼斯是一位学者、英国作家和研究员。他曾多次获得瑞士山吉奥卓越运营奖研究与专业出版类别的奖项,也包括了国际精益六西格玛研究所(ILSSI)[1]的"精益思想…

【Java】已解决java.sql.SQLException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.sql.SQLException异常 在Java中,java.sql.SQLException是一个通用的异常类,用于表示在数据库操作中发生的错误。无论是类型错误、数据类型不匹配…

Nacos 2.x 系列【15】数据源插件支持达梦、Oracel、PostgreSQL......

文章目录 1. 概述2. 持久层机制2.1 固定语句2.2 数据源插件 3. 案例演示3.1 编译已实现插件3.2 自定义插件3.3 数据库初始化3.4 插件引入3.4.1 方式一:引入到源码3.4.2 方式二:插件加载目录 3.5 修改配置3.6 测试 1. 概述 在实际项目开发中,…

[Linux] 历史根源

UNIX系统: 1969年,由贝尔实验室的K.Thompson和D.M.Ritchie为PDP-7机器编写的一个分时操作系统, 最初使用汇编语言编写, 后来1972年C语言出世以后,二人由使用C写了UNIX3, 此后UNIX大为流行开来 UNIX流派树&a…

vxe-table 列表过滤踩坑_vxe-table筛选

但是这个过滤输入值必须是跟列表的值必须一致才能查到,没做到模糊查询的功能,根据关键字来过滤并没有实现。 下面提供一下具体实现方法:(关键字来过滤) filterNameMethod({ option, row }) {if (row.name.indexOf(op…

不拼搏不是兄弟的京东,618被指「心眼子」太多上热榜……

好多年不咋公开露面的刘强东,在明尼苏达州事件逐渐不被人提起后,其按捺不住的互联网企业家网红属性,这大半年内,好像又血脉觉醒了……‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 比如在今年618前夕,刘强东因跨国操盘京东&a…

GlusterFS企业分布式存储

GlusterFS 分布式文件系统代表-nfs常见分布式存储Gluster存储基础梳理GlusterFS 适合大文件还是小文件存储? 应用场景术语Trusted Storage PoolBrickVolumes Glusterfs整体工作流程-数据访问流程GlusterFS客户端访问流程 GlusterFS常用命令部署 GlusterFS 群集准备环…

轻松选购指南:如何挑选3D建模和3D渲染的高效计算机?

选择最适合 3D 建模和3D渲染的计算机可能是一项艰巨的任务,特别是对于初学者来说。有很多因素需要考虑,包括处理器、显卡、内存和存储容量。 如果你计划购买一台计算机或利用3D产品渲染服务,那么你必须了解需要考虑的特性。以下是选择3D建模…

中望CAD 2025 (ZW3D2025) 简体中文修改版

名称:中望CAD 2025 (ZW3D2025) 简体中文修改版 描述:一款三维CAD设计工具,运行破解补丁ZW3D2025-2024-Patch执行修补。 链接:夸克网盘分享 📁 大小:3.2GB 🏷 标签:#PC软件 #CAD #设…

项目四 OpenStack身份管理

任务一 理解身份服务 1.1 •Keystone的基本概念 • 认证 ( Authentication ) —— 确认用户身份的过程 ,又称身份验证 。 • 凭证 ( Credentials ) —— 又 称凭据,是用于 确认用户身份的数据 。 • 令牌…

jeecg快速启动(附带本地运行可用版本下载)

版本整理(windows x64位): redis:3.0.504 MYSQL:5.7 Maven:3.9.4(setting文件可下载) Nodejs:v16.20.2(建议不要安装默认路径下,如已安装在c盘,运行yarn报…

多线程(总结黑马程序员)

一、什么是线程? 是一个程序内部的一条执行流程 多线程是什么? 多条线程由CPU负责调度执行 多线程的创建方式一:继承Thread类 //1.继承Thread类 public class MyThread extends Thread {//2.必须重写run方法Overridepublic void run() {…

机器人学习和研究的物质基础包含哪些内容?

为啥写这个? 在很多博客里面提及物质基础,没想到询问的也非常多,写一篇详细一点的。 之前的故事 不合格且失败机器人讲师个人理解的自身课程成本情况-CSDN博客 迷失自我无缘多彩世界-2024--CSDN博客 物质基础与情绪稳定的关系-CSDN博客 …

Javaweb登录校验

登录校验 JWT令牌的相关操作需要添加相关依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>一、摘要 场景&#xff1a;当我们想要访问一个网站时&am…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

VMware RedHat虚拟机磁盘扩容(添加磁盘和扩展磁盘)

前言 自己的电脑上配一个虚拟机还是很有必要的&#xff0c;用起来比双系统方便一点&#xff0c;之前搞了100g的ubuntu没用到&#xff0c;后面重装redhat觉得随便搞个20g就够用了&#xff0c;后面用到之后就遇到磁盘不够用的情况&#xff0c;只能说情况允许的话&#xff0c;磁盘…

CityEngine记录1:工程目录

CityEngine的工程目录结构对于理解和组织3D城市建模项目至关重要。以下是对CityEngine工程目录结构的详细解析&#xff1a; Assets&#xff1a; 存放模型的零件与纹理图片。这些资产通常用于在建模过程中为建筑物、道路、植被等元素添加详细的纹理和细节。 Data&#xff1a; …