## arthas

找目标线程池

```bash
# 使用 tt 命令跟踪线程池的方法调用（如 execute 方法），获取实例引用：

# 跟踪线程池的 execute 方法调用，最多记录 10 次(会打印 INDEX 等字段的数据)
tt -t org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor execute -n 10

# 替换 INDEX 为捕获的记录索引（如 1006、1009，这些是 ThreadPoolTaskExecutor 实例）
tt -i 1006 -x 2
# 能看到bean名称(看不到线程池配置和线程池名称前缀)

# 查看实例的线程池配置（替换 INDEX 为目标索引）(也能看到threadNamePrefix线程池名称前缀)
tt -i 1012 -w 'target'
# 只看线程池名称(示例: member-common-sync-thread-pool-)
tt -i 1012 -w 'target.threadNamePrefix'
```

下一步, 找目标线程

```bash
# 查找包含目标前缀的线程(会打印 ID 等信息)
thread --all | grep "member-common-sync-thread-pool-"
# 查看该线程的具体执行内容, 替换 131 为实际线程 ID
thread 131
# 堆栈会显示线程正在执行的方法（如数据库操作、业务逻辑等），帮助定位是否有耗时操作。
```

监控线程的动态执行情况

如果需要持续跟踪线程的状态变化，可使用 thread -b 命令监控阻塞线程，或结合 watch 命令监控线程执行的方法
当线程执行该方法时，会自动输出参数、返回值和执行时间，便于分析是否存在超时或异常。