Arthas使用案例(二)

说明:记录一次使用Arthas排查测试环境正在运行的项目BUG;

场景

有一个定时任务,该定时任务是定时去拉取某FTP服务器上的文件,进行备份、读取、解析等一系列操作。

而现在,因为开发环境是Windows, 线上项目是LInux,两个操作系统的路径分隔符不同,Windows是反斜杠(\),Liunx是斜杠(/),而我如果在本地起项目进行排查,就需要去更换代码中的相关路径,等于是用Windows系统下的代码,去操作LInux上的文件(FTP服务器是在Linux环境里的),相当麻烦。

于是我考虑用Arthas来进行排查。

排查

首先,通过分析日志,我知道代码保存的地方就在下面try代码块里,因为日志中有打印异常信息;

在这里插入图片描述

这部分代码进行了两部分的文件操作,而从结果来看,是后面这部分的FTP操作造成了异常,于是我在这段代码中间,加入了一段日志,如下:

在这里插入图片描述

然后,将这部分的代码在本地进行编译,找到对应的.class文件(本地起项目,然后在target目录里找到对应类的class文件),上传到服务器。进入Arthas界面,使用redefine命令,后面跟上class文件在服务器上的路径,热更新代码;

在这里插入图片描述

此时,再触发一下定时任务,查看日志信息,出现了新增的这部分日志,打印了ftp文件路径,如下:

在这里插入图片描述

将打印出来的路径与实际的路径一比较,发现就是路径错误,最后一个文件夹名对不上,淦!幸运的是,这个路径是写在数据库里面的,所以修改数据库中的路径或者修改实际FTP服务器上的文件夹名使其能对应上,两种方法都可以。

最后

本文图片打码较多,有些细节图片也没能截出来,大家仅供参考。文章主要是传递一个观点,如果你只想给项目加一行日志信息,千万不要去写代码 => commit and push => merge => package => 构建,用Arthas的redefine命令热更新代码,非常方便,值得选择

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

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

相关文章

FFmpeg 常用命令汇总

​​​​​​经常用到ffmpeg做一些视频数据的处理转换等,用来做测试,今天总结了一下,参考了网上部分朋友的经验,一起在这里汇总了一下。 1、ffmpeg使用语法 命令格式: ffmpeg -i [输入文件名] [参数选项] -f [格…

Jenkins: 配合docker来部署项目

jenkins docker 部署 1 )测试将jenkins构建后的项目部署到docker的nginx镜像中 nginx 镜像内的默认目录在 /usr/share/nginx/html将待部署项目存放在 /usr/share/nginx/html 项目名称目录在Mac环境下的 jenkins系统 中,工程项目默认的路径在 ~/.jenkin…

Spring整合RabbitMQ

需求&#xff1a;使用Spring整合RabbitMQ 步骤&#xff1a; 生产者 1.创建生产者工程 2.添加依赖 3.配置整合 4.编写代码发送消息 消费者步骤相同 生产者 导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://…

linux源配置:ubuntu、centos

1、ubuntu源配置 1&#xff09;先查电脑版本型号: lsb_release -c2&#xff09;再编辑源更新&#xff0c;源要与上面型号对应 参考&#xff1a;https://midoq.github.io/2022/05/30/Ubuntu20-04%E6%9B%B4%E6%8D%A2%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F%E6%BA%90/ /etc/apt/…

大衍数列-蓝桥杯?-Lua 中文代码解题第2题

大衍数列-蓝桥杯&#xff1f;-Lua 中文代码解题第2题 中国古代文献中&#xff0c;曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。 它的前几项是&#xff1a;0、2、4、8、12、18、24、32、40、50 … 其规律是&#xff1a;对偶数项&#xff0c;是序号平方再除…

HttpServer整合模块设计与实现(http模块五)

目录 类功能 类定义 类实现 编译测试 源码路标 类功能 类定义 // HttpServer模块功能设计 class HttpServer { private:using Handler std::function<void(const HttpRequest &, HttpResponse &)>;std::unordered_map<std::string, Handler> _get_r…

可调电容的工作原理,结构特点,工艺流程,选型参数及设计注意事项总结

🏡《总目录》 目录 1,概述2,工作原理2.1,变间隙电容原理(Variable-Gap Capacitor)2.2,电压可控电容原理(Voltage-Controlled Capacitor)2.3,压电可调电容原理(Piezoelectric Variable Capacitor)3,结构特点3.1,构造3.2,驱动方式3.3,特性

ISIS接口认证实验简述

默认情况下&#xff0c;ISIS接口认证通过在ISIS协议数据单元&#xff08;PDU&#xff09;中添加认证字段&#xff0c;例如&#xff1a;一个密钥或密码&#xff0c;用于验证发送方的身份。 ISIS接口认证防止未经授权的设备加入到网络中&#xff0c;并确保邻居之间的通信是可信的…

uniapp 实现双击点赞出现特效

更新一下 老板改了需求要加上特效 1. 创建点赞按钮 首先&#xff0c;在你的页面中创建一个点赞按钮 全局点赞的话就写在最外面的标签就行了。你可以使用 <button> 组件或者自定义一个视图组件。 <template> <view class"container"> <but…

实战:django项目环境搭建(pycharm,virtualBox)

django项目环境搭建 一.创建虚拟环境二.创建PyCharm远程连接 一.创建虚拟环境 需要用到的软件&#xff1a;PyCharm&#xff0c;VirtualBox虚拟机。 1.打开虚拟机终端&#xff0c;创建新的虚拟环境 Book。 2.在虚拟环境中创建新的文件夹 library&#xff0c;cd命令进入该文件…

《算法王晓东》最小重量机器设计问题

最小重量机器设计问题 题目描述 设某一机器由n个部件组成&#xff0c;每一种部件都可以从m个不同的供应商处购得。设wij是从供应商j处购得的部件i的重量&#xff0c; cij 是相应的价格。试设计一个算法&#xff0c;给出总价格不超过d的最小重量机器设计。 算法设计&#xff1a…

【四 (6)数据可视化之 Grafana安装、页面介绍、图表配置】

目录 文章导航一、Grafana介绍[✨ 特性]二、安装和配置1、安装2、权限配置&#xff08;账户/团队/用户&#xff09;①用户管理②团队管理③账户管理④看板权限 3、首选项配置4、插件管理①数据源插件②图表插件③应用插件④插件安装方式一⑤安装方式二 三、数据源管理1、添加数…

Java映射(含源码)

在Java中&#xff0c;“映射”&#xff08;Map&#xff09;是一个存储键值对的数据结构&#xff0c;允许你通过键&#xff08;Key&#xff09;快速访问值&#xff08;Value&#xff09;。映射中的每个键都是唯一的&#xff0c;这意味着每个键都对应一个特定的值。Java提供了几种…

Flutter中GetX的用法(路由管理)

目录 前言 一.安装 二.从一个计时器开始 三.Getx路由管理 1.普通路由导航 1.导航到新的页面 2.关闭SnackBars、Dialogs、BottomSheets或任何你通常会用Navigator.pop(context)关闭的东西 3.进入下一个页面&#xff0c;但没有返回上一个页面的选项&#xff08;用于SplashS…

python读取文件中相对路径和绝对路径

如果python执行文件和要读取的文件在同一目录&#xff0c;也就是同一个文件夹里&#xff0c;代码中就不必添加文件的路径。如果说要读取的文件在另外一个文件夹里&#xff0c;而这个文件夹又和pythou文件在同一个文件夹里&#xff0c;就要在代码中添加目标文件的路径&#xff0…

如何实现扩展Spring MVC框架的消息转换器?

扩展 Spring MVC 框架的消息转换器通常涉及编写自定义的 HttpMessageConverter 实现。HttpMessageConverter 是 Spring MVC 中用于处理 HTTP 请求和响应的消息转换器接口&#xff0c;它负责将 HTTP 请求中的数据转换为 Java 对象&#xff0c;并将 Java 对象转换为 HTTP 响应的数…

【STM32定时器 TIM小总结】

STM32 TIM详解 TIM介绍定时器类型基本定时器通用定时器高级定时器常用名词时序图预分频时序计数器时序图 定时器中断配置图定时器定时 代码调试 TIM介绍 定时器&#xff08;Timer&#xff09;是微控制器中的一个重要模块&#xff0c;用于生成定时和延时信号&#xff0c;以及处…

Vue3+TypeScript 学习回顾,温故而知新

文章简介&#xff1a; &#xff08;1&#xff09;简介&#xff1a; 在 Vue3 中编码规范如下&#xff1a; 编码语言: JavaScript代码风格: 组合式API选项式、API简写形式: setup语法糖 &#xff08;2&#xff09;复习内容&#xff1a; 1.核心: ref、reactive、computed、w…

路由器端口转发远程桌面控制:一电脑连接不同局域网的另一电脑

一、引言 路由器端口转发&#xff1a;指在路由器上设置一定的规则&#xff0c;将外部的数据包转发到内部指定的设备或应用程序。这通常需要对路由器进行一些配置&#xff0c;以允许外部网络访问内部网络中的特定服务和设备。端口转发功能可以实现多种应用场景&#xff0c;例如远…

写个树型穿梭框

以下是一个简单的树型穿梭框的示例代码&#xff08;使用HTML、CSS和JavaScript&#xff09;&#xff1a; HTML部分&#xff1a; <div id"tree"><ul><li><span>节点1</span><ul><li><span>节点1.1</span><…