0

Tomcat ノードで奇妙な問題が発生しています。スレッド ダンプを取得して、スレッドの状態を確認しました。ほとんどのスレッドが IN_NATIVE ステータスになっています。誰かがそれが何であり、これを引き起こしているのか教えてもらえますか? スレッドのスタック トレースは次のとおりです。

Thread 677: (state = IN_NATIVE)
 - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Compiled frame; information may be imprecise)
 - java.net.SocketInputStream.read(byte[], int, int) @bci=84, line=129 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.InputRecord.readFully(java.io.InputStream, byte[], int, int) @bci=21, line=293 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.InputRecord.read(java.io.InputStream, java.io.OutputStream) @bci=32, line=331 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(com.sun.net.ssl.internal.ssl.InputRecord, boolean) @bci=44, line=789 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(com.sun.net.ssl.internal.ssl.InputRecord) @bci=15, line=746 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.AppInputStream.read(byte[], int, int) @bci=30, line=75 (Compiled frame)
 - java.io.BufferedInputStream.fill() @bci=175, line=218 (Compiled frame)
 - java.io.BufferedInputStream.read1(byte[], int, int) @bci=44, line=258 (Compiled frame)
 - java.io.BufferedInputStream.read(byte[], int, int) @bci=49, line=317 (Compiled frame)
 - com.sun.jndi.ldap.Connection.run() @bci=30, line=808 (Compiled frame)
 - java.lang.Thread.run() @bci=11, line=619 (Interpreted frame)


Thread 675: (state = IN_NATIVE)
 - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Compiled frame; information may be imprecise)
 - java.net.SocketInputStream.read(byte[], int, int) @bci=84, line=129 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.InputRecord.readFully(java.io.InputStream, byte[], int, int) @bci=21, line=293 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.InputRecord.read(java.io.InputStream, java.io.OutputStream) @bci=32, line=331 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(com.sun.net.ssl.internal.ssl.InputRecord, boolean) @bci=44, line=789 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(com.sun.net.ssl.internal.ssl.InputRecord) @bci=15, line=746 (Compiled frame)
 - com.sun.net.ssl.internal.ssl.AppInputStream.read(byte[], int, int) @bci=30, line=75 (Compiled frame)
 - java.io.BufferedInputStream.fill() @bci=175, line=218 (Compiled frame)
 - java.io.BufferedInputStream.read1(byte[], int, int) @bci=44, line=258 (Compiled frame)
 - java.io.BufferedInputStream.read(byte[], int, int) @bci=49, line=317 (Compiled frame)
 - com.sun.jndi.ldap.Connection.run() @bci=30, line=808 (Compiled frame)
 - java.lang.Thread.run() @bci=11, line=619 (Interpreted frame)

完全なスレッドダンプは @ https://docs.google.com/document/d/16YnK85jrlxvu_PpQrTQxtIWjWmAlt8AF1ddAOzvisCM/edit?usp=sharingです。

4

2 に答える 2

2

Java は、C++ のラッパー言語のようなものです。一部のライブラリはまだ c++ を使用しており、java キーワード native を使用しています。

これは基本的に、現在 c/c++ コードで実行されているネイティブ メソッドを呼び出したことを意味します。

于 2013-02-03T18:28:19.243 に答える
1

スレッドは、LDAP サーバーからの SSL 経由の読み取りを実行する際にブロックされます。スタック トレースを参照してください。

于 2013-02-03T23:05:47.473 に答える