Thread Dumps in Appserver


Jspwiki style: center

Solution Component Single Multimode Win Service TD-Console TD-Server.log TD-Jvm.log Rating
1 DAS X
No No No 0
1 DAS
X
Yes No No 0
1 DAS
X No No No 0
1 NA X
No No No 0
1 NA
X
Yes No No 0
1 NA
X No No No 0
1 Inst X
No No No 0
1 Inst
X
No No No 0
1 Inst
X No No No 0
2 DAS X
No No Yes 0
2 DAS
X
Yes Yes Yes 0
2 DAS
X No No Yes 0
2 NA X
No No Yes 0
2 NA
X
Yes Yes Yes 0
2 NA
X No No Yes 0
2 Inst X
No Yes No 0
2 Inst
X
No Yes No 0
2 Inst
X No Yes No 0
3 DAS X
No No Yes 0
3 DAS
X
Yes No Yes 0
3 DAS
X No No Yes 0
3 NA X
No No Yes 0
3 NA
X
Yes No Yes 0
3 NA
X No No Yes 0
3 Inst X
No No Yes 0
3 Inst
X
No No Yes 0
3 Inst
X No No Yes 0
4 DAS X
No No No 0
4 DAS
X
Yes Yes No 0
4 DAS
X No No No* 0
4 NA X
No No No 0
4 NA
X
Yes Yes No 0
4 NA
X No No No 0
4 Inst(next columns for NA) X
No No No 0
4 Inst
X
No Yes No 0
4 Inst
X No No No 0

Jspwiki style: sortable

|

%%
%%

Solution Description Pro Con
1 Current Code No effort. Safe. No TDs in the usual cases
2 Combined Approach Guaranteed TDs. Use -XX only where neccessary. Cheap. TDs sometimes go to jvm.log, sometimes to server.log
3 All -XX Guaranteed TDs. Simple to implement. Consistent log files. Hidden. Not neccessary for instances
4 no -XX No usage of -XX args. Cheap No TDs in many situations

Jspwiki style: sortable

. Details

Option #1 – Current Situation:

DAS-- start-domain --verbose gets all TDs in console and server.log
start-domain mm – TD goes to console does NOT go to server.log
start-domain as a Windows Service – no thread dumps anywhere

NA
ONLY appear in the console in MM

Instances -

IF the NA was started in MM and is still running --> TDs go to the console.
If NA's parent process is dead (the usual situation) then no TDs.

---------------------------------------------------------------------------------

Option #2
This is the best option in my opinion. The -XX options are only used on the server
types that don't have a guaranteed living parent process.

DAS gets -XX JVM args for threaddumps via its server config in domain.xml
NA gets -XX JVM args for threaddumps via its section of processLauncher.xml

NA redirects all instance TDs to the correct server.log file
NA TDs go to jvm.log
DAS TDs go to jvm.log

note: JVM truncates log file, thus server.log can't be used.
note: instances do not get -XX args

PRO:
User can fine-tune logfile locations for DAS and possibly NA (pl.xml is "internal")
We avoid using -XX args for instances
TDs are guaranteed to be logged in almost all cases for DAS and NA and in all cases
for instances. The possible exception is if the user runs on a VM that doesn't handle
the logging args.
Cheap

CON:
instance TDs go to server.log. DAS, NA TDs go to jvm.log.
If running DAS or NA in MM then TDs will go to both server.log and jvm.log

---------------------------------------------------------------------------------

Option #3
Launcher automatically adds the -XX options for all servers. TDs go to the individual
jvm.log files.

PRO
Simple to implement.
Very consistent. All types will have their TDs written to jvm.log
Cheap

CON
Not a good idea to hide tricky jvm args like this
No way for the user to turn it off
Instances have to use the -XX args even though they are not needed.

--------------------------------------------------------------------------------------

Option #4
This is the best solution we can provide with the requirement of NOT using the -XX args

As long as the parent process is still alive, the TDs will be written to the correct server.log

Note that in the case of instances, the parent process is always alive (NA) so instances will
always get the TDs logged properly.

If DAS and/or NA are started in MM (or DAS-verbose mode) the TDs are logged.
If DAS and/or NA are started in single-command mode (the usual way), no TDs are logged

PRO
No use of the -XX args
Cheap

CON
The most common situation is that DAS and NA will not be logging TDs at all.

----------------------------------------------------------------------------------------


Jspwiki style: h2

center
%%