生产问题排查系列——未知404状态接口请求

引言

我们的产品主打金融服务领域,以B端客户为我们的核心合作伙伴,然而,我们的服务最终将惠及C端消费者。在技术实现上,我们采用了公司自主研发的微服务框架,该框架基于SpringBoot,旨在提供高效、可靠的服务支持。

近期,客户在通过应用性能管理(APM)工具监控服务时提出了一个问题,他们发现存在持续的404请求。要求我们进行调查,确定服务的调用端。初步调查我们的服务并没有设置引发这些请求的相关接口。因此,我们怀疑可能是某些服务尝试访问框架自带的监控接口所致。

鉴于客户主要通过监控Spring MVC的请求响应来进行服务监控,我们需要深入源码,寻找具体的实现类,以便准确识别并解决问题。

问题排查过程

熟悉Spring MVC的开发者都了解,其请求转发的核心入口是DispatcherServlet.doDispatch方法。因此,首要步骤便是利用Arthas的watch命令对请求进行监控,以便检查进入该方法的参数。

watch org.apache.catalina.core.ApplicationDispatcher doDispatch '{params,returnObj,throwExp}'  -n 5  -x 3 

在这里插入图片描述
在测试环境中进行服务排查时,我们发现接口请求的结果中包含了大量请求,这使得我们难以识别和查看特定的接口。为了解决这个问题,我们参考了Arthas官方文档,并了解到watch命令支持基于条件表达式的请求过滤功能。因此,我们编写了如下命令,以便对请求进行筛选,专注于查看我们关心的特定请求。

watch org.springframework.web.servlet.DispatcherServlet doDispatch '{params[0].request.getRemoteAddr()}'  'params[0].request.getRequestURI()=="/test"'

在这里插入图片描述
通过上述命名,我们可以观察到接口的实际请求IP地址为127.0.0.1。这是我在本地进行的模拟;在实际测试环境中,将显示实际的请求IP地址。

在确认了IP地址之后,我们便能够识别出与之对应的服务器上安装了哪些软件。进一步的调查发现,该服务器上部署了一个由我们公司自主研发的基于Nginx开发的转发服务。这个服务会定期发送"/"请求,以检测服务的活跃状态。

总结

在处理本次客户反馈的问题时,我们积累了以下宝贵经验:

  • 监控与排查:APM工具对于实时监控服务状态是至关重要的。它能够即时发现并提醒我们系统中的异常活动,如持续出现的404请求。

  • 熟悉框架:对使用的技术框架,如Spring MVC,需要有深入的了解。了解其请求转发机制和核心方法,能够帮助我们快速定位问题。

  • 工具使用:利用诊断工具如Arthas可以极大提高问题排查的效率。通过watch命令,我们可以根据自定义的条件表达式过滤和监控特定的请求,这对于查找问题源头非常有帮助。

  • 内部服务检查:定期检查和审计服务器上的服务及应用,特别是那些自主开发的服务,以确保它们的健康运行,避免非预期的行为影响系统稳定性。

  • 通讯协议理解:了解各种服务间如何通讯,例如基于HTTP的探活请求("/"请求),这有助于识别服务通信模式及其可能产生的影响。

综上所述,一个结构清晰的排查流程、对所用技术的深入理解以及有效的监控策略,都是确保服务稳定运行和快速响应问题的关键因素。

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

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

相关文章

Day06-Linux下目录命令讲解及重要文件讲解

Day06-Linux下目录命令讲解及重要文件讲解 1. Linux目录文件1.1 Linux系统目录结构介绍1.1.1 Linux与Windows目录结构对比 1.2 重要的Linux配置文件介绍1.2.1 /etc系统初始化及设置相关重要文件1.2.2 /usr目录的重要知识介绍------应用程序目录1.2.3 /var目录下的路径知识-----…

Mac如何设置一位数密码?

一、问题 Mac如何设置一位数密码? 二、解答 1、打开终端 2、清除全局账户策略 sudo pwpolicy -clearaccountpolicies 输入开机密码,这里是看不见的,输入完回车即可 3、重新设置密码 (1)打开设置-->用户和群组…

jenkins 下载插件sentry-cli失败 证书过期

现状 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli 原因是npm原域名停止解析,在访问上面sentry-cli的cdn资源的时候 证书过期无法下载。 解决: 替换证书过期…

解析Excel文件内容,按每列首行元素名打印出某个字符串的统计占比(超详细)

目录 1.示例: 1.1 实现代码1:列数为常量 运行结果: 1.2 实现代码2:列数为变量 运行结果: 1.示例: 开发需求:读取Excel文件,统计第3列到第5列中每列的"False"字段占…

机器学习算法决策树

决策树的介绍 决策树是一种常见的分类模型,在金融风控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分,这种思想是人类处理问题时的本能方法。例如在婚恋市场中,女方通常会先询问男方是否有房产&a…

【c语言】简单贪吃蛇的实现

目录 一、游戏说明 ​编辑 二、地图坐标​ ​编辑 三、头文件 四、蛇身和食物​ 五、数据结构设计​ 蛇节点结构如下: 封装一个Snake的结构来维护整条贪吃蛇:​ 蛇的方向,可以一一列举,使用枚举: 游戏状态&a…

C# winform 多语言(json)方式实现

前后对比 使用nuget json工具包1.总体思路 创建对应的json字典对照表 { "测试":"Test", "语言":"Language", "设置":"Set", "中文(默认)":"Chinese (default)", "英文":"E…

用通俗易懂的方式讲解:一文详解大模型 RAG 模块

文章目录 什么是 RAG?技术交流&资料通俗易懂讲解大模型系列 RAG模块化什么是模块化RAG? 索引模块块优化滑动窗口从小到大元数据附加 结构化组织层次化索引知识图谱文档组织 预检索模块查询扩展多查询子查询CoVe 查询转换重写HyDE 查询路由元数据路由…

Java对象属性设置方式

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 对象属性设置方式 直接赋值 SystemMappingCode systemMappingCode new SystemMappingCode();systemMappingCode.setCodeResp(request.getCodeResp());systemMapping…

面试八股文(2)

文章目录 1.ArrayList和LinkedList区别2.HashMap和HashTable区别3.线程的创建方式4.Java中异常处理5.Java序列化中某些字段不想进行序列化?6.Java序列化7.静态方法和实例方法8.List、Set、Map三者区别9.ArrayList和Vector区别10.HashMap和HashSet区别 1.ArrayList和…

flask基于Python的期货交易模拟系统的django-afl61-vue

期货交易模拟系统是一个便于用户在线查看期货投资、取消投资、风险控制、账户资金、持仓资金等,管理员进行管理的平台。因此本文主要论述了系统开发的过程和实现的功能,结合Web技术来实现的期货交易模拟系统。本系统以软件工程理论为开发基础&#xff0c…

Linux系统Shell脚本-----------正则表达式 文本三剑客之---------grep、 sed

一、正则表达式 1.前言 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在Linux中也就是代表我们定义的模式模板&…

【GitHub项目推荐--ChatGPT开源项目】【转载】

Auto-GPT Auto-GPT 是一个实验性的开源项目,基于 GPT-4。你给出 Auto-GPT 一个的任务,它不会立即输出答案,而会先自己通过多轮对话来琢磨、验证、决策,从而自己找出一条达成目标的路,整个过程完全不需要人类插手&…

Facebook的社交影响力:用户行为解析与趋势

在当今数字时代,社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为全球最大的社交平台之一,其社交影响力愈发显著。本文将深入分析Facebook的社交影响力,解析用户行为,同时探讨当前和未来的社交趋势。 社…

数据可视化 pycharts实现时间数据可视化

自用版 数据格式为: 运行效果为: from pyecharts import options as opts from pyecharts.charts import Polar, Page import csv filename "./hot-dog-places.csv" data_x [] data_y [] with open(filename) as f:reader csv.reade…

Python 中常用图像数据结构

(原文:https://blog.iyatt.com/?p13222 ) 1 测试环境 Python 3.12.1 numpy 1.26.3 opencv-python 4.9.0.80 pillow 10.2.0 matplotlib 3.8.2 注: 基于 2022.1.16 和 2022.4.9 的三篇博文再次验证并重写,原文已删…

Stable diffusion使用和操作流程

Stable Diffusion是一个文本到图像的潜在扩散模型,由CompVis、Stability AI和LAION的研究人员和工程师创建。它使用来自LAION-5B数据库子集的512x512图像进行训练。使用这个模型,可以生成包括人脸在内的任何图像,因为有开源的预训练模型,所以我们也可以在自己的机器上运行它…

网络时间协议NTP工作模式

单播服务器/客户端模式 单播服务器/客户端模式运行在同步子网中层数较高层上。这种模式下,需要预先知道服务器的IP地址。 客户端:运行在客户端模式的主机(简称客户端)定期向服务器端发送报文,报文中的Mode字段设置为3(客户端模式)。当客户端接收到应答报文时,客户端会…

编程流程图

对于复杂流程,我做开发之前一般会 先画一下流程图。特别是多个部门有交叉的情况下: processOn: 这个是我之前 一直的选择,他可以画上面的这些,流程图,网页操作,但是他不是免费的,查过…

【数据分享】1929-2023年全球站点的逐年最高气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据! 之前我们分享过1929-2023年全球气象站…