【结论】对,tt -i <index> 不带 -p 就是纯读快照、只读不执行——这恰恰是 tt 最该被当成默认姿势的地方:先把现场看明白,再决定要不要重放,而多数情况看完现场问题就清楚了,根本轮不到重放。
【展开】不带 -p 时还能顺手挑字段看,tt -i 1000 -w '{params[0], returnObj}' -x 3,-w 是 watch 表达式,写法和 watch 命令一致,比直接 tt -i 1000 刷一屏原始快照清爽得多。另外每条记录都带时间戳和线程名,拿几个 index 横向对比,很容易看出"哪种入参组合才会出问题",这点是 watch -n 做不到的。
【展开】防手滑这层,给个更土但有效的办法:把重放命令从肌肉记忆里摘出去。日常只练 tt -t / tt -l / tt -i 三连,-p 和 --replay-times 单独写进团队排查手册,要用的时候照着抄,而不是顺手敲。对有副作用的入口(下单、扣款、发消息),排查手段直接换成预发环境回放流量,生产上只观察、不重放。
【结尾】真手滑了也别慌着再敲一遍确认——tt -i <index> 里能看到入参和执行时间,先按这个圈定副作用范围、走业务侧补偿,Arthas 这边没有 undo。收尾仍是老规矩:tt --delete-all 清记录(快照占堆,高频入口挂久了很疼),再 stop + shutdown。
正式会员
认证极客






