登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
科技
›
使用 Arthas 在 Pod PreStop Hook 中收集诊断数据 ...
使用 Arthas 在 Pod PreStop Hook 中收集诊断数据
[ 复制链接 ]
阎一禾
2025-6-16 15:56:17
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
Arthas 是 Java 诊断的神器,非常适合在 Kubernetes PreStop Hook 中收集关键诊断数据。相比基础 JDK 工具,Arthas 提供了更强大的实时诊断能力,且能以异步非阻塞方式执行。
最佳实践:Arthas PreStop Hook 配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: java-app
spec:
template:
spec:
containers:
- name: java-app
image: your-java-image
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- |
# 下载 Arthas
wget -q -O /tmp/arthas.zip https://arthas.aliyun.com/arthas-boot.jar
unzip -o -d /tmp /tmp/arthas.zip
# 启动 Arthas 诊断任务
java -jar /tmp/arthas-boot.jar --async-dump=10m -c "batch-script /diagnostic/arthas_script" -p 1
# 立即退出 PreStop,让 Arthas 在后台继续收集
exit 0
volumeMounts:
- name: diagnostic-data
mountPath: /diagnostic
volumes:
- name: diagnostic-data
persistentVolumeClaim:
claimName: diagnostic-pvc
复制代码
高效 Arthas 诊断脚本设计
创建 /diagnostic/arthas_script 内容:
# 1. 基本系统信息
sysenv > /diagnostic/sysenv.txt
sysprops > /diagnostic/sysprops.txt
jvm > /diagnostic/jvm_info.txt
# 2. 线程分析 (最耗CPU的5个线程)
thread -n 5 > /diagnostic/thread_top5.txt
thread --state BLOCKED > /diagnostic/thread_blocked.txt
# 3. 内存状态 (轻量级快速收集)
dashboard -n 1 > /diagnostic/dashboard_snapshot.txt
memory > /diagnostic/memory_summary.txt
# 4. 类加载分析
classloader -t > /diagnostic/classloader_tree.txt
# 5. 方法热点分析 (采样5秒)
profiler start --duration 5 --file /diagnostic/cpu_profiler.html --format html
# 6. 堆直方图 (轻量替代堆转储)
vmtool --action getInstances --className java.lang.Object --limit 100 --express 'instances.length' > /diagnostic/heap_histo.txt
# 7. 网络状态
netstat > /diagnostic/netstat.txt
# 8. 锁竞争分析
monitor -c 5 java.util.concurrent.locks.ReentrantLock acquire > /diagnostic/lock_contention.txt
# 9. GC 行为分析
vmtool --action forceGc > /diagnostic/force_gc.txt
jfr start --dump-on-exit --filename /diagnostic/gc_events.jfr
# 10. 慢方法追踪
trace *StringUtils isBlank '#cost>100' > /diagnostic/slow_methods.txt
# 退出 Arthas
stop
复制代码
Arthas PreStop 设计优势
特性
传统 JDK 工具
Arthas 方案
执行时间
可能超时后台异步执行(10分钟宽限)
数据完整性
只能获取当时快照可采集一段时间的趋势
内存影响
可能触发额外 GC低开销采样
诊断深度
基础数据方法级跟踪/锁竞争分析
输出格式
纯文本支持 HTML/JFR 等格式
分析复杂度
需事后分析自带火焰图等可视化
诊断数据持久化方案
确保 Arthas 收集的数据安全存储:
1. PV/PVC 配置
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: diagnostic-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: fast-storage
resources:
requests:
storage: 5Gi
复制代码
2. 云存储上传
在 Arthas 脚本最后添加上传逻辑:
# 上传到 S3/MinIO
aws s3 cp /diagnostic/ s3://diagnostic-bucket/${POD_NAME}/ --recursive
# 或者使用 Kubernetes Job 事后处理
kubectl create job --from=cronjob/diagnostic-uploader ${POD_NAME}-upload
复制代码
进阶诊断场景
1. OOM 特定分析
# 检查堆外内存
vmtool --action getInstances --className java.nio.DirectByteBuffer --express 'instances.length'
# 分析 Metaspace
classloader -stats
复制代码
2. 死锁定位
# 检测死锁
thread -b | tee /diagnostic/deadlock.txt
# 如果死锁存在,深度跟踪
stack java.lang.Object wait -n 5
复制代码
3. 内存泄漏追踪
# 跟踪指定类实例创建
monitor -c 5 com.example.LeakyClass <init>
复制代码
安全与性能优化
# 1. 控制 Arthas 内存使用
java -XX:MaxRAMPercentage=10 -jar /tmp/arthas-boot.jar ...
# 2. 使用只读 Volume 存储脚本
volumeMounts:
- name: arthas-scripts
mountPath: /diagnostic/scripts
readOnly: true
# 3. 限制诊断时间
timeout 300s java -jar ... # 5分钟超时
复制代码
诊断数据分析自动化
# 创建自动分析任务
kubectl create job analyze-${POD_NAME} \
--image=diagnostic-analyzer:latest \
-- /analyzer.sh s3://diagnostic-bucket/${POD_NAME}
复制代码
故障诊断流程
graph LR
A[Pod Terminating] --> B[PreStop Hook]
B --> C[启动 Arthas 诊断]
C --> D[收集系统状态]
C --> E[内存快照]
C --> F[线程分析]
C --> G[方法级追踪]
D --> H[持久存储]
E --> H
F --> H
G --> H
H --> I[自动分析服务]
I --> J[生成报告]
J --> K[告警通知]
复制代码
使用 Arthas 的 PreStop Hook 方案相比传统方式有以下优势:
零侵入性
:不修改应用代码
高安全性
:在容器终止前异步收集
深度诊断
:支持方法级追踪
低开销
:采样技术避免压垮应用
可视化
:自带火焰图等高级分析
此方案特别适合生产环境中的复杂问题诊断,能最大程度在 Pod 终止前捕获关键运行时状态。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
使用
Arthas
Pod
PreStop
Hook
相关帖子
MySQL不推荐使用UUID等字符串做主键
大模型使用中遇到的坑——HTTP query 参数探讨
Claude Code安装和使用教程
【译】 如何使用 .NET MAUI 构建 iOS 小部件
【UWP】使用 Vue/Vite 编写 WinJS/UWP
使用钉钉远程操作你的claude code
使用Microsoft Agent Framework构建C# AI代理
彻底告别OpenClaw使用焦虑:我给他装上了“透视眼”和“批量克隆模组
使用 C# 删除 PDF 中的数字签名
使用小龙虾来操作猿编程的遥控车
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
MySQL不推荐使用UUID等字符串做主键
0
615
司寇涵涵
2026-03-15
安全
大模型使用中遇到的坑——HTTP query 参数探讨
0
1004
铜坠匍
2026-03-15
安全
Claude Code安装和使用教程
0
14
驳嗦
2026-03-16
业界
【译】 如何使用 .NET MAUI 构建 iOS 小部件
0
999
剩鹄逅
2026-03-21
安全
【UWP】使用 Vue/Vite 编写 WinJS/UWP
0
213
颜清华
2026-03-21
业界
使用钉钉远程操作你的claude code
0
335
呈步
2026-03-21
业界
使用Microsoft Agent Framework构建C# AI代理
0
450
呈步
2026-03-22
业界
彻底告别OpenClaw使用焦虑:我给他装上了“透视眼”和“批量克隆模组
0
666
柩通奉
2026-03-22
业界
使用 C# 删除 PDF 中的数字签名
0
817
祖娅曦
2026-03-26
业界
使用小龙虾来操作猿编程的遥控车
0
858
账暴
2026-03-26
回复
(30)
揿纰潦
2025-10-24 02:50:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
欧阳雪枫
2025-11-12 09:55:10
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,学习下。
百杲憔
2025-11-24 03:47:10
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
笃迩讦
2025-11-29 18:21:49
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
富账慕
2025-12-25 12:25:08
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
髭赌
2026-1-21 07:40:13
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢楼主提供!
度阡舅
2026-1-23 04:06:52
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享
奚娅琼
2026-1-25 09:26:14
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢发布原创作品,程序园因你更精彩
俏襟选
2026-1-25 12:11:57
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
慕疼
2026-1-30 03:59:20
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
蔺堰
2026-1-30 04:49:33
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
用心讨论,共获提升!
艺轫
2026-1-30 06:55:49
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
yyds。多谢分享
巫雪艷
2026-2-2 05:17:26
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
杼氖
2026-2-2 13:13:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
瘴锲如
2026-2-5 07:55:57
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
东西不错很实用谢谢分享
祉遛吾
2026-2-6 07:28:33
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢发布原创作品,程序园因你更精彩
癖艺泣
2026-2-8 02:17:39
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
用心讨论,共获提升!
掳诚
2026-2-8 10:30:09
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
阴昭昭
2026-2-8 15:45:41
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
喜欢鼓捣这些软件,现在用得少,谢谢分享!
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
阎一禾
2026-2-8 15:45:41
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9522
6
韶又彤
9916
7
宋子
9878
8
荪俗
9018
9
闰咄阅
9995
10
蓬森莉
9870
查看更多
今日好文热榜
583
largebin attack与house of storm
352
智能体组织研发范式变革
810
智能体组织研发范式变革
858
使用小龙虾来操作猿编程的遥控车
400
图片防御与lvlm攻击论文阅读笔记
624
图片防御与lvlm攻击论文阅读笔记
119
二分查找力扣题(leetcode)
79
3分钟部署本地大模型,零成本实现 Token 自
197
Electron41+Vite8.0+DeepSeek桌面端AI助手|
676
OPUS编解码器在audio DSP上的移植和应用
471
SpringCloud进阶--Seata与分布式事务
989
大模型私有化部署指南:从“一键安装”到“
626
大模型私有化部署指南:从“一键安装”到“
886
SpringCloud进阶--Seata与分布式事务
172
SpringCloud进阶--Seata与分布式事务
786
Oracle SQL经典练习50题 | 附答案
206
gitru:一个由 Rust 打造的零依赖 Git 提交
930
gitru:一个由 Rust 打造的零依赖 Git 提交
267
gitru:一个由 Rust 打造的零依赖 Git 提交
856
gitru:一个由 Rust 打造的零依赖 Git 提交