云平台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.mzph.cn/web/26743.shtml

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

相关文章

项目实战--文档搜索引擎

在我们的学习过程中,会阅读很多的文档,例如jdk的API文档,但是在这样的大型文档中,如果没有搜索功能,我们是很难找到我们想查阅的内容的,于是我们可以实现一个搜索引擎来帮助我们阅读文档。 1. 实现思路 1…

依据容器创建本地镜像

1 2 3 4 5 6 7 8 9 10 11 12 13 1 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中。 目录 根据镜像启动…

Java——IO流(一)-(4/8):前置知识-字符集、UTF-8、GBK、ASCII、乱码问题、编码和解码等

目录 常见字符集介绍 标准ASCII字符集 GBK(汉字内码扩展规范,国标) Unicode字符集(统一码,万国码) 小结 字符集的编码、解码操作 方法 实例演示 常见字符集介绍 标准ASCII字符集 ASCll(American St…

Java如何根据对象属性值从对象列表中获取满足条件的对象

实现方式 在java 中,根据对象属性值从对象列表中获取满足条件的对象,可以使用以下2种方法: 使用循环遍历: 手动遍历列表。 使用流(Streams)API: 利用 Java 8 引入的 Streams 来简化代码。 示…

Sklearn中逻辑回归建模

分类模型的评估 回归模型的评估方法,主要有均方误差MSE,R方得分等指标,在分类模型中,我们主要应用的是准确率这个评估指标,除此之外,常用的二分类模型的模型评估指标还有召回率(Recall&#xff…

Golang | Leetcode Golang题解之第150题逆波兰表达式求值

题目: 题解: func evalRPN(tokens []string) int {stack : make([]int, (len(tokens)1)/2)index : -1for _, token : range tokens {val, err : strconv.Atoi(token)if err nil {indexstack[index] val} else {index--switch token {case ""…

Maven 核心插件 maven-resources-plugin 使用详解

Maven 核心插件 maven-resources-plugin 负责处理项目中的资源文件。它的主要功能是将资源从源目录(如 src/main/resources)复制到目标目录(如 target/classes),并在此过程中进行必要的过滤和替换操作,如替…

PCL 低阶多项式求解

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里使用C++实现对二阶和三阶多项式的求解过程(求解多项式的根),其推导过程网上有很多,这里就不多叙述了。 二、实现代码 RootsPolynomial.h #pragma once#include <algorithm> #include <cstdint>…

LeetCode题解:2303. 计算应缴税款总额,JavaScript,详细注释

原题链接&#xff1a; https://leetcode.cn/problems/calculate-amount-paid-in-taxes/ 解题思路&#xff1a; 该题的目标是把收入分层几个区间&#xff0c;每个区间内部的金额单独计算纳税额以[[3,50],[7,10],[12,25]]为例&#xff0c;该题要计算的分别是&#xff1a; [0, 3…

MATLAB神经网络---regressionLayer回归输出层

回归输出层regressionLayer 回归层计算回归任务的半均方误差损失。 Matlab中的regressionLayer函数是一个深度学习工具箱中的函数,用于定义回归问题的损失函数层。它可用于神经网络模型的最后一层&#xff0c;将预测值与目标值进行比较,并计算出损失值。 语法 layer regre…

WPF学习(3)--不同类通过接口实现同种方法

一、接口概述 1.接口的概念 在C#中&#xff0c;接口&#xff08;interface&#xff09;是一种引用类型&#xff0c;它定义了一组方法、属性、事件或索引器&#xff0c;但不提供实现。接口只定义成员的签名&#xff0c;而具体的实现由实现接口的类或结构体提供。接口使用关键字…

MySQL备份与恢复:确保数据的安全与可靠性

引言: 数据的安全性和可靠性的重要性 在现代企业和组织中,数据已经成为了最重要的资产之一。数据的安全性和可靠性对于企业的运营至关重要。首先,数据的安全性保证了敏感信息不会落入错误的手中,防止了潜在的经济损失和法律风险。其次,数据的可靠性则确保了企业能够准确…

AI学习指南机器学习篇-支持向量机超参数调优

AI学习指南机器学习篇-支持向量机超参数调优 在机器学习领域中&#xff0c;支持向量机&#xff08;Support Vector Machines&#xff0c;SVM&#xff09;是一种非常常用的监督学习模型。它通过寻找一个最优的超平面来进行分类和回归任务。然而&#xff0c;在实际应用中&#x…

数据赋能(118)——体系:数据收集——技术方法、主要工具

技术方法 数据收集的技术方法多种多样&#xff0c;以下是一些主要的技术手段&#xff1a; 网络爬虫&#xff1a;这是一种自动化程序&#xff0c;能够遍历互联网上的网页并提取所需信息。网络爬虫可以有效地收集大规模的结构化和非结构化数据&#xff0c;为后续的数据分析和挖…

【Go】使用Go语言实现AES CBC No Padding加密和解密

冷雨悄悄停吧 天真的心因为你 那管多风雨天仍和你一起 告诉你我其实多么的想你 其实我我真的爱着你 &#x1f3b5; 蒋明周《真的爱着你》 引言 高级加密标准&#xff08;AES&#xff09;是一种广泛使用的加密算法。它可以工作在多种模式下&#xff0c;最…

Cesium4Unreal - # 009 直接加载显示shapefile

文章目录 直接加载显示shapefile1 思路2 步骤2.1 下载shapelib2.2 添加依赖模块2.3 创建Actor2.3.1 MyShapeLoaderActor.h2.3.2 MyShapeLoaderActor.cpp2.3 蓝图代码直接加载显示shapefile 1 思路 在Unreal Engine中加载显示shapefile无非就是从shapefile中读取几何数据,并且…

【车载音视频电脑】嵌入式AI分析车载DVR,支持8路1080P

产品特点 采用H.265 & H.264编解码&#xff0c;节约存储空间、传输流量&#xff1b; 高分辨率&#xff1a;支持8路1080P*15FPS/4路1080P*30FPS、720P、D1等编解码&#xff1b; 支持1张SATA硬盘&#xff0c;取用方便&#xff0c;满足大容量存储要求&#xff1b; 支持1个…

ChatGPT中文镜像网站分享

ChatGPT 是什么&#xff1f; ChatGPT 是 OpenAI 开发的一款基于生成预训练变换器&#xff08;GPT&#xff09;架构的大型语言模型。主要通过机器学习生成文本&#xff0c;能够执行包括问答、文章撰写、翻译等多种文本生成任务。截至 2023 年初&#xff0c;ChatGPT 的月活跃用户…

神经网络介绍及教程案例

神经网络介绍及教程&案例 神经网络&#xff08;Neural Networks&#xff09;是机器学习和人工智能中的一种关键技术&#xff0c;模仿了人类大脑的工作方式&#xff0c;能够处理复杂的数据和任务。以下是神经网络的一些基础介绍&#xff1a; 基本概念 神经元&#xff08;N…

12.实战私有数据微调ChatGLM3

实战私有数据微调ChatGLM3 实战私有数据微调ChatGLM3实战构造私有的微调数据集基于 ChatGPT 设计生成训练数据的 Prompt使用 LangChain GPT-3.5-Turbo 生成训练数据样例训练数据解析、数据增强和持久化存储自动化批量生成训练数据集流水线提示工程&#xff08;Prompt Engineer…