ソケットへの書き込みを担当するスレッド (約 4 ~ 5 MBPS の大量のデータ) がスタックし、場合によっては 15 分間もスタックし、その後再びアクションを起こし、パーツ スタック トレースで再びスタックします。なので:
java.lang.Thread.State: RUNNABLE
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.write(Unknown Source)
- locked <0xa4ca4660> (a java.io.BufferedOutputStream)
mypackage.myMethod()
私の当面の仮定は、ObjectWrite がブロックされているということでした。しかし、この動作はせいぜい不安定です。基盤となるネットワークは問題ないようです。立ち往生する前に、何時間も正常に書き込みを行っています。
スレッドはまた、次のチャンクを書き込む前に少なくとも 50 ミリ秒の休憩を取ります。通常のブロックではない場合、他に何が考えられるでしょうか?
pstack:
ff2cba60 send (10, 4dc230, c312, 0)
fe03ce58 Java_java_net_SocketOutputStream_socketWrite0 (3a4928, c312, 10, 95f7f890, 0, c312) + 158
fc093e5c * java/lang/System.getSecurityManager()Ljava/lang/SecurityManager;+3
fc08ec3c * *java/net/SocketOutputStream.socketWrite([BII)V [compiled] +45
fc08ec3c * *java/net/SocketOutputStream.write([BII)V+5
fc005ab0 * java/io/BufferedOutputStream.write([BII)V+20
fc005ab0 * mypackage.mymethod()V+84 (line 598)