夯住(Hang)是指程序仍在运行,卡在某个方法调用上,没有返回也没有异常抛出;卡住时间从几秒到几小时不等。 Java程序发生Hang时,应该首先使用 jstack 把java进程的堆栈信息保存下来 ,供后继分析使用。
调用OSS Java SDK的程序Hang,有以下可能的情况及原因。
说明:
jstack -l <pid> > js.txt
可以把pid的堆栈信息保存到文件js.txt中。pid可以通过jps
命令查找到。- 抓包工具,Windows系统下推荐使用
Wireshark
。捕获筛选器可以设置成host <bucket-name>.<endpoint>
,例如:
host my-bucket.oss-cn-hangzhou.aliyuncs.com`
Linux使用tcpdump
命令抓包,命令格式如下:
sudo tcpdump tcp -i <eth0> -t -s 0 -c 200000 and host <bucket>.<endpoint> -w <file.cap>
例如:
sudo tcpdump tcp -i eth0 -t -s 0 -c 200000 and host my-bucket