WebLogic Server 12.1.2 の実行スレッド以外のスレッド数を調べてみた。
Hyper-Threading の ON/OFF を切換えて、WebLogic Server を起動してスレッドダンプを取得してみると、GC task thread と weblogic.socket.Muxer のスレッド数が変わる。
おそらくスレッド名に数字がついているものはCPU数などによって数が変わると思われる。
- 2CPU(Hyper-Threading OFF)の場合: 33スレッド
- 4CPU(Hyper-Threading ON)の場合: 36スレッド
追記(2016/01/26):
id:yamadamn さんにGCスレッド数は -XX:ParallelGCThreads=threads で指定できると教えてもらいました。
.@yoheia ちなみに本論でのスレッド数ですが、デフォルトでは確かにCPU数依存で変わったりしますが、特にGCスレッド数は起動オプションParallelGCThreads(GC方式依存)などで変更できます。 https://t.co/2LjZ3rd7So
— Takahiro YAMADA (@yamadamn) 2016, 1月 25
-XX:ParallelGCThreads=threads
java
Young世代とOld世代の、パラレル・ガベージ・コレクションに使用されるスレッド数を設定します。デフォルト値は、JVMに使用可能なCPUの数によって異なります。
たとえばパラレルGCのスレッド数を2に設定するには、次のオプションを指定します。
-XX:ParallelGCThreads=2
スレッドダンプを取得する
$ jcmd 21046 sun.tools.jcmd.JCmd 20646 weblogic.Server $ jcmd 20646 Thread.print > wls12120_thread_dump_2cpu_20160124.log
スレッド数を調べる
- 2CPU(Hyper-Threading OFF)の場合
$ grep '^\"' wls12120_thread_dump_2cpu_20160124.log|wc -l 33 $ grep '^\"' wls12120_thread_dump_2cpu_20160124.log|grep -v weblogic.kernel.Default|wc -l 28 $ grep '^\"' wls12120_thread_dump_2cpu_20160124.log|sort "[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f9bacd10800 nid=0x1095 in Object.wait() [0x00007f9ba3345000] "Attach Listener" daemon prio=10 tid=0x00007f9b90023800 nid=0x10ce waiting on condition [0x0000000000000000] "C2 CompilerThread0" daemon prio=10 tid=0x00007f9bac0a6000 nid=0x108f waiting on condition [0x0000000000000000] "C2 CompilerThread1" daemon prio=10 tid=0x00007f9bac0a9000 nid=0x1090 waiting on condition [0x0000000000000000] "DoSManager" daemon prio=10 tid=0x00007f9b78228000 nid=0x109f waiting on condition [0x00007f9ba2632000] "DynamicListenThread[Default[1]]" daemon prio=10 tid=0x00007f9b6cb2f800 nid=0x10a6 runnable [0x00007f9ba1821000] "DynamicListenThread[Default[2]]" daemon prio=10 tid=0x00007f9b6cb2a800 nid=0x10a3 runnable [0x00007f9ba1b24000] "DynamicListenThread[Default[3]]" daemon prio=10 tid=0x00007f9b6cb2e000 nid=0x10a5 runnable [0x00007f9ba1922000] "DynamicListenThread[Default]" daemon prio=10 tid=0x00007f9b6cb2c800 nid=0x10a4 runnable [0x00007f9ba1a23000] "ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f9b6c127800 nid=0x1099 runnable [0x00007f9ba2c3b000] "ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f9b6c129800 nid=0x109a runnable [0x00007f9ba2b3a000] "ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f9b6c130000 nid=0x109b runnable [0x00007f9ba2a39000] "Finalizer" daemon prio=10 tid=0x00007f9bac079000 nid=0x108d in Object.wait() [0x00007f9bb052a000] "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f9bac020000 nid=0x1089 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f9bac021800 nid=0x108a runnable "main" prio=10 tid=0x00007f9bac00a000 nid=0x1088 in Object.wait() [0x00007f9bb3894000] "Reference Handler" daemon prio=10 tid=0x00007f9bac077000 nid=0x108c in Object.wait() [0x00007f9bb062b000] "Service Thread" daemon prio=10 tid=0x00007f9bac0ab800 nid=0x1091 runnable [0x0000000000000000] "Signal Dispatcher" daemon prio=10 tid=0x00007f9bac0a4000 nid=0x108e runnable [0x0000000000000000] "[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x000000000162d000 nid=0x109c in Object.wait() [0x00007f9ba2938000] "[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x000000000162e800 nid=0x10a1 in Object.wait() [0x00007f9ba1d26000] "[STANDBY] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f9bace16000 nid=0x10a7 in Object.wait() [0x00007f9ba14fe000] "[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f9bace18000 nid=0x10a8 in Object.wait() [0x00007f9ba13fd000] "Thread-11" prio=10 tid=0x00007f9b6c5c9000 nid=0x10a0 waiting on condition [0x00007f9ba2736000] "Thread-7" prio=10 tid=0x00007f9b6c06e800 nid=0x1098 waiting on condition [0x00007f9ba2d3c000] "Timer-0" daemon prio=10 tid=0x00007f9bac831000 nid=0x1093 in Object.wait() [0x00007f9ba376e000] "Timer-1" daemon prio=10 tid=0x00007f9bacd0d000 nid=0x1094 in Object.wait() [0x00007f9ba3446000] "VDE Transaction Processor Thread" daemon prio=10 tid=0x00007f9b6c24a000 nid=0x109d in Object.wait() [0x00007f9ba2837000] "VM Periodic Task Thread" prio=10 tid=0x00007f9bac0b6800 nid=0x1092 waiting on condition "VM Thread" prio=10 tid=0x00007f9bac073000 nid=0x108b runnable "weblogic.GCMonitor" daemon prio=10 tid=0x00007f9b6cb26800 nid=0x10a2 in Object.wait() [0x00007f9ba1c25000] "weblogic.timers.TimerThread" daemon prio=10 tid=0x00007f9bacd2e000 nid=0x1097 in Object.wait() [0x00007f9ba3042000] "weblogic.time.TimeEventGenerator" daemon prio=10 tid=0x00007f9bacd21800 nid=0x1096 in Object.wait() [0x00007f9ba3244000]
- 4CPU(Hyper-Threading ON)の場合
$ grep '^\"' wls12120_thread_dump_4cpu_20160124.log|wc -l 36 $ grep '^\"' wls12120_thread_dump_4cpu_20160124.log|grep -v weblogic.kernel.Default|wc -l 31 $ grep '^\"' wls12120_thread_dump_4cpu_20160124.log|sort "[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f693d415800 nid=0x50cd in Object.wait() [0x00007f692a922000] "Attach Listener" daemon prio=10 tid=0x00007f6910001000 nid=0x5235 waiting on condition [0x0000000000000000] "C2 CompilerThread0" daemon prio=10 tid=0x00007f693c0aa000 nid=0x50b0 waiting on condition [0x0000000000000000] "C2 CompilerThread1" daemon prio=10 tid=0x00007f693c0ad000 nid=0x50b1 waiting on condition [0x0000000000000000] "DoSManager" daemon prio=10 tid=0x00007f68b8001800 nid=0x50d8 waiting on condition [0x00007f6929c12000] "DynamicListenThread[Default[1]]" daemon prio=10 tid=0x00007f68e09fa800 nid=0x50e2 runnable [0x00007f6928d09000] "DynamicListenThread[Default[2]]" daemon prio=10 tid=0x00007f68e09ed800 nid=0x50df runnable [0x00007f692900c000] "DynamicListenThread[Default[3]]" daemon prio=10 tid=0x00007f68e09f8800 nid=0x50e1 runnable [0x00007f6928e0a000] "DynamicListenThread[Default]" daemon prio=10 tid=0x00007f68e09ee800 nid=0x50e0 runnable [0x00007f6928f0b000] "ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00b7800 nid=0x50d1 runnable [0x00007f692a319000] "ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00b4800 nid=0x50d2 runnable [0x00007f692a218000] "ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00be000 nid=0x50d3 runnable [0x00007f692a117000] "ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00c2000 nid=0x50d4 runnable [0x00007f692a016000] "Finalizer" daemon prio=10 tid=0x00007f693c07d000 nid=0x50ae in Object.wait() [0x00007f6930b4d000] "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f693c01f800 nid=0x50a8 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f693c021800 nid=0x50a9 runnable "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f693c023000 nid=0x50aa runnable "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f693c025000 nid=0x50ab runnable "main" prio=10 tid=0x00007f693c009800 nid=0x50a7 in Object.wait() [0x00007f6940d31000] "Reference Handler" daemon prio=10 tid=0x00007f693c07b000 nid=0x50ad in Object.wait() [0x00007f6930c4e000] "Service Thread" daemon prio=10 tid=0x00007f693c0af800 nid=0x50b2 runnable [0x0000000000000000] "Signal Dispatcher" daemon prio=10 tid=0x00007f693c0a8000 nid=0x50af runnable [0x0000000000000000] "[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f68d8006800 nid=0x50d5 in Object.wait() [0x00007f6929f15000] "[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f68d8008000 nid=0x50dd in Object.wait() [0x00007f692930f000] "[STANDBY] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f68c02da000 nid=0x50e3 in Object.wait() [0x00007f692897b000] "[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f693d282000 nid=0x50e4 in Object.wait() [0x00007f692887a000] "Thread-12" prio=10 tid=0x00007f68e057e800 nid=0x50dc waiting on condition [0x00007f6929d13000] "Thread-8" prio=10 tid=0x00007f68e006a000 nid=0x50d0 waiting on condition [0x00007f692a41a000] "Timer-0" daemon prio=10 tid=0x00007f693c91e800 nid=0x50b4 in Object.wait() [0x00007f692ad2c000] "Timer-1" daemon prio=10 tid=0x00007f693d413800 nid=0x50cc in Object.wait() [0x00007f692aa23000] "VDE Transaction Processor Thread" daemon prio=10 tid=0x00007f68e01cf800 nid=0x50d6 in Object.wait() [0x00007f6929e14000] "VM Periodic Task Thread" prio=10 tid=0x00007f693c0ba000 nid=0x50b3 waiting on condition "VM Thread" prio=10 tid=0x00007f693c076800 nid=0x50ac runnable "weblogic.GCMonitor" daemon prio=10 tid=0x00007f68e09f5800 nid=0x50de in Object.wait() [0x00007f692910d000] "weblogic.timers.TimerThread" daemon prio=10 tid=0x00007f693d435000 nid=0x50cf in Object.wait() [0x00007f692a61f000] "weblogic.time.TimeEventGenerator" daemon prio=10 tid=0x00007f693d421000 nid=0x50ce in Object.wait() [0x00007f692a821000]
補足
WebLogic Server インストール手順
- WebLogic Server 12c (12.2.1), WebLogic Server 11g (10.3.6) and Previous Releases から Zip distribution Update 1 for Mac OSX, Windows, and Linux (179 MB) をダウンロードする。
- インストールする
$ su - oracle $ cd /opt/oracle $ unzip wls1212_devzip_update1.zip $ cd wls12120 $ export JAVA_HOME=/usr/lib/jvm/java-openjdk $ export MW_HOME=/opt/oracle/wls12120 $ . ./configure.sh Do you want to configure a new domain? [y/n]? y Enter username to boot WebLogic server:weblogic Enter password to boot WebLogic server: For confirmation, please re-enter password required to boot WebLogic server: ... <Jan 24, 2016 8:59:42 AM JST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.> <Jan 24, 2016 8:59:42 AM JST> <Notice> <WebLogicServer> <BEA-000360> <The server started in RUNNING mode.>
起動・停止手順
$ cd /opt/oracle/wls12120/user_projects/domains/mydomain/bin
$ ./startWebLogic.sh &
$ ./stopWebLogic.sh
メモ
MW_HOME/wlserver/server/lib/wlsafclient.jar の weblogic/Server.class -> weblogic/t3/srvr/*.class あたりがスレッドの起動に関わっているぽい。
追記(2016/01/26):
.@yoheia 一点、wlsafclient.jarはSAFクライアント用です。 https://t.co/hYCdV7NdvP
WLS 12.1.2ではweblogic.Serverクラスはweblogic.server.merged.jarから読み込まれているようです。
— Takahiro YAMADA (@yamadamn) 2016, 1月 25
と id:yamadamn さんに教えていただいたので改めてちゃんと確認したところ、その通りだった。
$ cd /opt/oracle/wls12120 $ find . -name '*.jar'|while read LINE do export LINE jar tvf $LINE|perl -nle 'print $ENV{LINE} . $_' done > weblogic_classes.txt $ head -3 weblogic_classes.txt ./oracle_common/modules/jersey-server-1.17.1.jar 15634 Thu Feb 28 12:47:06 JST 2013 META-INF/MANIFEST.MF ./oracle_common/modules/jersey-server-1.17.1.jar 0 Thu Feb 28 12:47:06 JST 2013 META-INF/ ./oracle_common/modules/jersey-server-1.17.1.jar 7 Wed Feb 27 20:17:26 JST 2013 META-INF/jersey-module-version $ grep weblogic/Server.class weblogic_classes.txt ./wlserver/modules/features/weblogic.server.merged.jar★ 9849 Fri Sep 19 16:46:54 JST 2014 weblogic/Server.class ./wlserver/server/lib/wlsaft3client.jar 9849 Fri Sep 19 16:59:40 JST 2014 weblogic/Server.class
表2-1 WebLogic Serverクライアントの種類と機能
スタンドアロン・クライアントの概要
クライアント 種類 言語 プロトコル クライアント・クラス要件 主な機能 JMS SAFクライアント(WebLogic Server 9.2で導入) WMI Java IIOP wlsafclient.jar
wljmsclient.jar
wlclient.jar
JDK 1.6以降メッセージをクライアント上でローカルに格納し、クライアントの接続時にサーバー側のJMS宛先に転送します。SSLをサポートします。第7章「JMS SAFクライアントによる確実なメッセージ送信」を参照してください。T3クライアントの選択肢のうち、高速なものを使用することを検討してください。
さらに、
.@yoheia この辺はもちろんバージョン依存だと思いますが、WLS 10.3以降では、CAT(Classloader Analysis Tool)で調べることができます。
手前味噌で恐縮ですが、以下辺りを参照ください。
https://t.co/2Mhrss9yZq
— Takahiro YAMADA (@yamadamn) 2016, 1月 25
CAT(Classloader Analysis Tool)で調べることができるとのことなので、WebLogic を起動して、http://localhost:7001/wls-cat/ にアクセスし、インストール時に設定したidとパスワードを入力してログインして、
- 左ペインで bea_wls_internal -> bea_wls_internal.war を選択
- View: detailed を選択
- Actions: Classloader Tree を選択
- Type: sun.misc.Launcher$AppClassLoader -> HashCode のリンクを選択
- Resource to analyze に "weblogic.Server" を入力して "Analyze Resource" を押下
Resource: weblogic.Server Checksum: 74c69d6ed5e3047b088315a4be6254ea Load Location: jar:file:/opt/oracle/wls12120/wlserver/modules/features/weblogic.server.merged.jar!/weblogic/Server.class Classloader Type: sun.misc.Launcher$AppClassLoader Classloader Hash Code: 537068416 Classloader Search Order: 537068416 ->537068416 Alternative Locations: None Source: public final class weblogic.Server { public static final String WEBLOGIC_INSTRUMENTATION_PROPERTY public static final String DIAGNOSTIC_PRE_PROCESSOR_CLASS public static final String WEBLOGIC_INSTRUMENTATION_SERVER_SCOPE public static final String CLASSLOADER_PREPROCESSOR public void weblogic.Server(); public static void main(String[]); public static boolean isRedefineClassesSupported(); public String toString(); public static String getUsage(); }
Load Location で weblogic/Server.class は /opt/oracle/wls12120/wlserver/modules/features/weblogic.server.merged.jar から load されていることがわかる。
スレッドダンプ全量
$ cat wls12120_thread_dump_4cpu_20160124.log 20646: 2016-01-24 09:06:27 Full thread dump OpenJDK 64-Bit Server VM (24.79-b02 mixed mode): "Attach Listener" daemon prio=10 tid=0x00007f6910001000 nid=0x5235 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f693d282000 nid=0x50e4 in Object.wait() [0x00007f692887a000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fe868358> (a weblogic.work.ExecuteThread) at java.lang.Object.wait(Object.java:503) at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:238) - locked <0x00000000fe868358> (a weblogic.work.ExecuteThread) at weblogic.work.ExecuteThread.run(ExecuteThread.java:271) "[STANDBY] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f68c02da000 nid=0x50e3 in Object.wait() [0x00007f692897b000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fe868e80> (a weblogic.work.ExecuteThread) at java.lang.Object.wait(Object.java:503) at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:238) - locked <0x00000000fe868e80> (a weblogic.work.ExecuteThread) at weblogic.work.ExecuteThread.run(ExecuteThread.java:271) "DynamicListenThread[Default[1]]" daemon prio=10 tid=0x00007f68e09fa800 nid=0x50e2 runnable [0x00007f6928d09000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241) - locked <0x00000000ff072158> (a java.lang.Object) at weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:31) at weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535) at weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417) at weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173) at java.lang.Thread.run(Thread.java:745) "DynamicListenThread[Default[3]]" daemon prio=10 tid=0x00007f68e09f8800 nid=0x50e1 runnable [0x00007f6928e0a000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241) - locked <0x00000000ff0727d8> (a java.lang.Object) at weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:31) at weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535) at weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417) at weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173) at java.lang.Thread.run(Thread.java:745) "DynamicListenThread[Default]" daemon prio=10 tid=0x00007f68e09ee800 nid=0x50e0 runnable [0x00007f6928f0b000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241) - locked <0x00000000ff073048> (a java.lang.Object) at weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:31) at weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535) at weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417) at weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173) at java.lang.Thread.run(Thread.java:745) "DynamicListenThread[Default[2]]" daemon prio=10 tid=0x00007f68e09ed800 nid=0x50df runnable [0x00007f692900c000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241) - locked <0x00000000ff072bf0> (a java.lang.Object) at weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:31) at weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535) at weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417) at weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173) at java.lang.Thread.run(Thread.java:745) "weblogic.GCMonitor" daemon prio=10 tid=0x00007f68e09f5800 nid=0x50de in Object.wait() [0x00007f692910d000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fed60758> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135) - locked <0x00000000fed60758> (a java.lang.ref.ReferenceQueue$Lock) at weblogic.platform.GCMonitorThread.waitForNotification(GCMonitorThread.java:88) at weblogic.platform.GCMonitorThread.run(GCMonitorThread.java:64) "[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f68d8008000 nid=0x50dd in Object.wait() [0x00007f692930f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fed113a0> (a weblogic.work.ExecuteThread) at java.lang.Object.wait(Object.java:503) at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:238) - locked <0x00000000fed113a0> (a weblogic.work.ExecuteThread) at weblogic.work.ExecuteThread.run(ExecuteThread.java:271) "Thread-12" prio=10 tid=0x00007f68e057e800 nid=0x50dc waiting on condition [0x00007f6929d13000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000fe868210> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at weblogic.utils.concurrent.JDK15ConcurrentBlockingQueue.take(JDK15ConcurrentBlockingQueue.java:89) at weblogic.store.internal.PersistentStoreImpl.getOutstandingWork(PersistentStoreImpl.java:678) at weblogic.store.internal.PersistentStoreImpl.synchronousFlush(PersistentStoreImpl.java:1078) at weblogic.store.internal.PersistentStoreImpl.run(PersistentStoreImpl.java:1070) at java.lang.Thread.run(Thread.java:745) "DoSManager" daemon prio=10 tid=0x00007f68b8001800 nid=0x50d8 waiting on condition [0x00007f6929c12000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at com.octetstring.vde.DoSManager.run(DoSManager.java:433) "VDE Transaction Processor Thread" daemon prio=10 tid=0x00007f68e01cf800 nid=0x50d6 in Object.wait() [0x00007f6929e14000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fee021b0> (a com.octetstring.vde.backend.standard.TransactionProcessor) at java.lang.Object.wait(Object.java:503) at com.octetstring.vde.backend.standard.TransactionProcessor.waitChange(TransactionProcessor.java:367) - locked <0x00000000fee021b0> (a com.octetstring.vde.backend.standard.TransactionProcessor) at com.octetstring.vde.backend.standard.TransactionProcessor.run(TransactionProcessor.java:212) "[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f68d8006800 nid=0x50d5 in Object.wait() [0x00007f6929f15000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fed12038> (a weblogic.work.ExecuteThread) at java.lang.Object.wait(Object.java:503) at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:238) - locked <0x00000000fed12038> (a weblogic.work.ExecuteThread) at weblogic.work.ExecuteThread.run(ExecuteThread.java:271) "ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00c2000 nid=0x50d4 runnable [0x00007f692a016000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) - locked <0x00000000fee29028> (a sun.nio.ch.Util$2) - locked <0x00000000fee29018> (a java.util.Collections$UnmodifiableSet) - locked <0x00000000fee28ef0> (a sun.nio.ch.EPollSelectorImpl) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102) at weblogic.socket.NIOSocketMuxer.selectFrom(NIOSocketMuxer.java:549) at weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:478) at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30) at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119) "ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00be000 nid=0x50d3 runnable [0x00007f692a117000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) - locked <0x00000000fee28ce8> (a sun.nio.ch.Util$2) - locked <0x00000000fee28cd8> (a java.util.Collections$UnmodifiableSet) - locked <0x00000000fee28ba0> (a sun.nio.ch.EPollSelectorImpl) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102) at weblogic.socket.NIOSocketMuxer.selectFrom(NIOSocketMuxer.java:549) at weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:478) at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30) at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119) "ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00b4800 nid=0x50d2 runnable [0x00007f692a218000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) - locked <0x00000000fee29368> (a sun.nio.ch.Util$2) - locked <0x00000000fee29358> (a java.util.Collections$UnmodifiableSet) - locked <0x00000000fee29230> (a sun.nio.ch.EPollSelectorImpl) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102) at weblogic.socket.NIOSocketMuxer.selectFrom(NIOSocketMuxer.java:549) at weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:478) at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30) at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119) "ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007f68e00b7800 nid=0x50d1 runnable [0x00007f692a319000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) - locked <0x00000000fee296a8> (a sun.nio.ch.Util$2) - locked <0x00000000fee29698> (a java.util.Collections$UnmodifiableSet) - locked <0x00000000fee29570> (a sun.nio.ch.EPollSelectorImpl) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102) at weblogic.socket.NIOSocketMuxer.selectFrom(NIOSocketMuxer.java:549) at weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:478) at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30) at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119) "Thread-8" prio=10 tid=0x00007f68e006a000 nid=0x50d0 waiting on condition [0x00007f692a41a000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c121fce8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at weblogic.utils.concurrent.JDK15ConcurrentBlockingQueue.take(JDK15ConcurrentBlockingQueue.java:89) at weblogic.store.internal.PersistentStoreImpl.getOutstandingWork(PersistentStoreImpl.java:678) at weblogic.store.internal.PersistentStoreImpl.synchronousFlush(PersistentStoreImpl.java:1078) at weblogic.store.internal.PersistentStoreImpl.run(PersistentStoreImpl.java:1070) at java.lang.Thread.run(Thread.java:745) "weblogic.timers.TimerThread" daemon prio=10 tid=0x00007f693d435000 nid=0x50cf in Object.wait() [0x00007f692a61f000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fee2a1d8> (a java.lang.Object) at weblogic.timers.internal.TimerThread.doWait(TimerThread.java:114) - locked <0x00000000fee2a1d8> (a java.lang.Object) at weblogic.timers.internal.TimerThread.access$000(TimerThread.java:22) at weblogic.timers.internal.TimerThread$Thread.run(TimerThread.java:290) "weblogic.time.TimeEventGenerator" daemon prio=10 tid=0x00007f693d421000 nid=0x50ce in Object.wait() [0x00007f692a821000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c11e82b0> (a weblogic.time.common.internal.TimeTable) at weblogic.time.common.internal.TimeTable.snooze(TimeTable.java:286) - locked <0x00000000c11e82b0> (a weblogic.time.common.internal.TimeTable) at weblogic.time.common.internal.TimeEventGenerator.run(TimeEventGenerator.java:117) at java.lang.Thread.run(Thread.java:745) "[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007f693d415800 nid=0x50cd in Object.wait() [0x00007f692a922000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c1220558> (a weblogic.work.ExecuteThread) at java.lang.Object.wait(Object.java:503) at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:238) - locked <0x00000000c1220558> (a weblogic.work.ExecuteThread) at weblogic.work.ExecuteThread.run(ExecuteThread.java:271) "Timer-1" daemon prio=10 tid=0x00007f693d413800 nid=0x50cc in Object.wait() [0x00007f692aa23000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fee2a3d8> (a java.util.TaskQueue) at java.util.TimerThread.mainLoop(Timer.java:552) - locked <0x00000000fee2a3d8> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505) "Timer-0" daemon prio=10 tid=0x00007f693c91e800 nid=0x50b4 in Object.wait() [0x00007f692ad2c000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000fee2a7f0> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:503) at java.util.TimerThread.mainLoop(Timer.java:526) - locked <0x00000000fee2a7f0> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505) "Service Thread" daemon prio=10 tid=0x00007f693c0af800 nid=0x50b2 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread1" daemon prio=10 tid=0x00007f693c0ad000 nid=0x50b1 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread0" daemon prio=10 tid=0x00007f693c0aa000 nid=0x50b0 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x00007f693c0a8000 nid=0x50af runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=10 tid=0x00007f693c07d000 nid=0x50ae in Object.wait() [0x00007f6930b4d000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c18f2a18> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135) - locked <0x00000000c18f2a18> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209) "Reference Handler" daemon prio=10 tid=0x00007f693c07b000 nid=0x50ad in Object.wait() [0x00007f6930c4e000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c18f27e0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:503) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133) - locked <0x00000000c18f27e0> (a java.lang.ref.Reference$Lock) "main" prio=10 tid=0x00007f693c009800 nid=0x50a7 in Object.wait() [0x00007f6940d31000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c171c2b8> (a weblogic.t3.srvr.T3Srvr) at java.lang.Object.wait(Object.java:503) at weblogic.t3.srvr.T3Srvr.waitForDeath(T3Srvr.java:995) - locked <0x00000000c171c2b8> (a weblogic.t3.srvr.T3Srvr) at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:492) at weblogic.Server.main(Server.java:74) "VM Thread" prio=10 tid=0x00007f693c076800 nid=0x50ac runnable "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f693c01f800 nid=0x50a8 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f693c021800 nid=0x50a9 runnable "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f693c023000 nid=0x50aa runnable "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f693c025000 nid=0x50ab runnable "VM Periodic Task Thread" prio=10 tid=0x00007f693c0ba000 nid=0x50b3 waiting on condition JNI global references: 230
参考
JDK 5.0から採用されているパラレルGC用の処理スレッドです。このスレッドは、CPUコアと同じ数だけ生成されます。
Interstage Application Serverにおいて、Javaのフルスレッドダンプに現われる"GC task thread"とは、どのようなスレッドですか?
詳細は、以下のマニュアルを参照してください。