strace调试tomcat

本文介绍使用strace调试运行在tomcat容器下web服务对操作系统调用的方法。作者碰到底层问题,经查找和尝试找到办法。步骤为找到tomcat进程ID,将strace附加到进程,并说明了相关参数,如 -p、-f、-T 等。

strace调试tomcat

今天碰到一个底层问题,需要使用strace调试运行在tomcat容器下web服务对操作系统调用,google了好多博客都没有完整的答案,东拼西凑加上不断尝试,总算找到办法。
Step1: 找到tomcat进程ID

-bash-4.2# ps aux|grep -v grep|grep tomcat|awk '{print $2}'|head -n1
25253

Step2: strace附加到进程

strace -f -p 25253 -T -tt -o /var/logs/strace.log

参数说明:

  1. -p {pid},调试正在运行的进程
  2. -f 跟踪子线程,一定要打开,否则就只能看到FUTEX_WAIT一条信息,猜测原因tomcat是通过子线程完成web请求的,主进程都是wait状态。
  3. -T显示每个调用的耗时,调试信息最后一个尖括号<>,单位是秒,例如<0.002616>。
  4. -tt显示调用的时间,具体到微秒。-t显示调用时间到秒。可以和其他日志匹配问题发生时间,很关键。
  5. -o trace输出文件。

示例:

[pid 75799] 10:10:07.842021 <... write resumed> ) = 2296 <0.101173>
[pid 75794] 10:10:07.842036 restart_syscall(<... resuming interrupted call ...> <unfinished ...>
[pid 75756] 10:10:07.842051 <... restart_syscall resumed> ) = -1 ETIMEDOUT (Connection timed out) <0.012292>
[pid 75755] 10:10:07.842078 futex(0x7f2420030654, FUTEX_WAIT_PRIVATE, 3, NULL <unfinished ...>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值