天天看点

OSS Java SDK夯住(Hang)问题排查

调用oss java sdk的程序hang,有以下可能的情况及原因。

OSS Java SDK夯住(Hang)问题排查

说明:

<code>jstack -l &lt;pid&gt; &gt; js.txt</code>可以把pid的堆栈信息保存到文件js.txt中。pid可以通过<code>jps</code>命令查找到。

抓包工具,windows系统下推荐使用<code>wireshark</code>。捕获筛选器可以设置成

<code>host &lt;bucket-name&gt;.&lt;endpoint&gt;</code>,例如:

linux使用<code>tcpdump</code>命令抓包,命令格式如下:

例如:

然后用wireshark打开file.cap分析抓包数据。

getobject获取的inputstream需要close,示例如下:

oss java sdk 2.2.3前的版本getsimplifiedobjectmeta调用有bug,连接没有关闭,会造成泄漏。2.2.3版本修复。

hang在<code>poolinghttpclientconnectionmanager.leaseconnection</code>的堆栈如下:

hang在<code>java.net.socketoutputstream.socketwrite</code>的堆栈如下: