修改代码 线上 debug 操作
正常的线上 Java 诊断使用 Btrace, 阿里开源的 Arthas 等工具. 不过偶尔还是要使用最古老的方式, 比如不能 copy 太大的工具去线上. 这里记录一下这种古老的方式.
正常的线上 Java 诊断使用 Btrace, 阿里开源的 Arthas 等工具. 不过偶尔还是要使用最古老的方式, 比如不能 copy 太大的工具去线上. 这里记录一下这种古老的方式.
有各种问题会引起 Java 线程卡死, 导致应用程序最终不能正常服务. 通常加上合适的 timeout 时间会使问题缓解. 这里列举一些例子.
之前每次做 heap/thread dump 都要登录到对应的机器上去执行几行命令, 后来有人集成了采集 dump 功能到 slack, 每次复制机器名到 slack 就可以采集 dump 了. 不过还可以通过 slat API 去采集 dump, 只要给 salt API 一个脚本就可以了.
平时生成机器都是 Linux, 但是有时候也会碰到 Windows. 在桌面环境下使用 wireshark 非常方便, 可是有些 prod 机器很难装 wireshark, 因为各种网络限制. 不过还是可以通过一些命令行工具做出 tcpdump. 这里就介绍如何使用 WinPcap & WinDump 做出 tcpdump. 并且使用 windows 剪贴板从本地复制到生产环境.