UNABLE TO GENERATE THREAD DUMPS USING KILL -3 COMMAND ???
Trying to generate thread dumps using kill -3 but can not see where the dumps are routed . If some one is using JRE instead JDK then jstack will not be available so there is no other option than kill -3 .
Be sure the -Xrs JVM option is not being used, as it causes SIGQUIT and SIGWAITING signals to be ignored. Running kill -3 sends a SIGQUIT signal to the JVM, so using this option will cause kill -3 to be ignored.
I have tried to generate thread dump using kill -3 and I am able to generate it successfully.
Thread dumps will be in the file where stdout is redirected or in console output.
[aipatil@aipatil bin]$ ps -ef|grep java aipatil 29150 29071 47 00:21 pts/0 00:00:10 java -D[Standalone] -server -verbose:gc -Xloggc:/home/aipatil/Downloads/Jboss_EAP_Binaries/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/home/aipatil/Downloads/Jboss_EAP_Binaries/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/server.log -Dlogging.configuration=file:/home/aipatil/Downloads/Jboss_EAP_Binaries/jboss-eap-7.2.0/jboss-eap-7.2/standalone/configuration/logging.properties -jar /home/aipatil/Downloads/Jboss_EAP_Binaries/jboss-eap-7.2.0/jboss-eap-7.2/jboss-modules.jar -mp /home/aipatil/Downloads/Jboss_EAP_Binaries/jboss-eap-7.2.0/jboss-eap-7.2/modules org.jboss.as.standalone -Djboss.home.dir=/home/aipatil/Downloads/Jboss_EAP_Binaries/jboss-eap-7.2.0/jboss-eap-7.2 -Djboss.server.base.dir=/home/aipatil/Downloads/Jboss_EAP_Binaries/jboss-eap-7.2.0/jboss-eap-7.2/standalone aipatil 29330 28805 0 00:22 pts/1 00:00:00 grep --color=auto java [aipatil@aipatil bin]$ kill -3 29150
#Result:
2021-04-26 00:23:56 Full thread dump OpenJDK 64-Bit Server VM (25.242-b08 mixed mode): "ServerService Thread Pool -- 74" #130 prio=5 os_prio=0 tid=0x0000556752e7f000 nid=0x7299 waiting on condition [0x00007f78ee684000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000fca10198> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) at org.jboss.threads.JBossThread.run(JBossThread.java:485) "ServerService Thread Pool -- 73" #129 prio=5 os_prio=0 tid=0x000055674f12d000 nid=0x727a waiting on condition [0x00007f78f7b86000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) OpenJDK / Sun JDK Usejps -lv
to find the Java process ID for issuingkill -QUIT
orkill -3
. Be sure the-Xrs
JVM option is not being used, as it causesSIGQUIT
andSIGWAITING
signals to be ignored. Runningkill -3
sends aSIGQUIT
signal to the JVM, so using this option will causekill -3
to be ignored. If using OpenJDK or Sun JDK 1.6 or later, usingjstack
is an option. This is useful when redirecting standard out to a file is problematic for some reason (e.g. it is not desirable to restart the JVM just to redirect standard out). Execute the following, passing in the Java process ID:jstack -l JAVA_PID > jstack.ou
t Note the process ID number of the Java process (e.g. usingtop
, agrep
onps -axw
, etc.) and send aQUIT
signal to the process with thekill -QUIT
orkill -3
command 1. For example:kill -3 JAVA_PID
thread details will be routed to the file where the standard output is redirected .refer startup script . if started from console it may be written to host controller log . JBoss EAP Parameter Use the below command to start JBoss instance and then usekill -3
to generate the thread dumps. If the Java application is started with a service script that logs console output, the thread dumps will be in the console log. Otherwise, redirectstdout
to a file on startup.nohup $JBOSS_HOME/bin/run.sh -c yourinstancename $JBOSS_OPTS >> console-$(date +%Y%m%d).out 2>&1 < /dev/null & kill -3 JAVA_PID
This will redirect your output/dump to the file console specified in the above command. in the above case referconsole-$(date +%Y%m%d).out
.better trim the file before trying kill -3 using >console-$(date +%Y%m%d).out
THEN RUN KILL -3 PID NOW VERIFYconsole-$(date +%Y%m%d).out