-
Bug
-
Resolution: Fixed
-
High
-
8.5.4, 8.11.0, 8.12.0
-
8.05
-
10
-
Severity 2 - Major
-
9
-
Issue Summary
The currently shipped GC logging configuration file (see "set-gc-params.sh" & "set-gc-params.bat" files ) does not allow the GC logs to be parsed in GCViewer correctly. GCViewer throws "Failed to recognize file format" error.
This is the current configuration :
GC_JVM_PARAMETERS="-Xlog:gc*:file=$LOGBASEABS/logs/atlassian-jira-gc-%t.log:time,uptime:filecount=5,filesize=20M ${GC_JVM_PARAMETERS}"
It is missing "tags" and "level"
I have raised a ticket to GCViewer to get some insight on this here:
Steps to Reproduce
- Use JAVA 11 ( AdoptOpenJDK ) with Jira. You can use the JAVA_HOME="path-to/adoptopenjdk-11.jdk/Contents/Home" to configure this on the setenv.sh file.
- Try to open the GC logs in GCViewer
Expected Results
GC logs will parse correctly in GCViewer
Actual Results
This error will be thrown :
INFO [DataReaderFacade]: GCViewer version 1.37-SNAPSHOT (2019-12-16T20:29:43+0000) SEVERE [DataReaderFactory]: Failed to recognize file format. content: [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Post Evacuate Collection Set: 1.9ms [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Other: 0.3ms [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Eden regions: 209->0(203) [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Survivor regions: 21->15(29) [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Old regions: 371->384 [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Humongous regions: 2->2 [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Metaspace: 237617K->237617K(1271808K) [2020-08-10T19:43:00.036-0800][207.616s] GC(122) Pause Young (Normal) (GCLocker Initiated GC) 601M->399M(703M) 45.411ms [2020-08-10T19:43:00.036-0800][207.616s] GC(122) User=0.10s Sys=0.00s Real=0.04s [2020-08-10T19:43:00.884-0800][208.464s] GC(123) Pause Young (Concurrent Start) (GCLocker Initiated GC) [2020-08-10T19:43:00.884-0800][208.465s] GC(123) Using 4 workers of 4 for evacuation [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Pre Evacuate Collection Set: 0.5ms [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Evacuate Collection Set: 39.1ms [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Post Evacuate Collection Set: 9.7ms [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Other: 0.5ms [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Eden regions: 204->0(196) [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Survivor regions: 15->23(28) [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Old regions: 384->384 [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Humongous regions: 2->2 [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Metaspace: 246711K->246711K(1280000K) [2020-08-10T19:43:00.934-0800][208.514s] GC(123) Pause Young (Concurrent Start) (GCLocker Initiated GC) 603M->408M(703M) 49.910ms [2020-08-10T19:43:00.934-0800][208.514s] GC(123) User=0.13s Sys=0.00s Real=0.05s [2020-08-10T19:43:00.934-0800][208.514s] GC(124) Concurrent Cycle [2020-08-10T19:43:00.934-0800][208.514s] GC(124) Concurrent Clear Claimed Marks [2020-08-10T19:43:00.934-0800][208.515s] GC(124) Concurrent Clear Claimed Marks 0.403ms [2020-08-10T19:43:00.935-0800][208.515s] GC(124) Concurrent Scan Root Regions [2020-08-10T19:43:00.982-0800][208.563s] GC(124) Concurrent Scan Root Regions 47.671ms [2020-08-10T19:43:00.982-0800][208.563s] GC(124) Concurrent Mark (208.563s) [2020-08-10T19:43:00.982-0800][208.563s] GC(124) Concurrent Mark From Roots [2020-08-10T19:43:00.982-0800][208.563s] GC(124) Using 1 workers of 1 for marking [2020-08-10T19:43:01.952-0800][209.532s] GC(125) Pause Young (Normal) (G1 Evacuation Pause) [2020-08-10T19:43:01.952-0800][209.533s] GC(125) Using 4 workers of 4 for evacuation [2020-08-10T19:43:01.991-0800][209.572s] GC(125) Pre Evacuate Collection Set: 0.0ms [2020-08-10T19:43:01.991-0800][209.572s] GC(125) Evacuate Collection Set: 37.6ms [2020-08-10T19:43:01.991-0800][209.572s] GC(125) Post Evacuate Collection Set: 1.3ms [2020-08-10T19:43:01.991-0800][209.572s] GC(125) Other: 0.3ms [2020-08-10T19:43:01.991-0800][209.572s] GC(125) Eden regions: 196->0(186) [2020-08-10T19:43:01.991-0800][209.572s] GC(125) Survivor regions: 23->20(28) [2020-08-10T19:43:01.991-0800][209.572s] GC(125) Old regions: 384->396 [2020-08-10T19:43:01.992-0800][209.572s] GC(125) Humongous regions: 2->2 [2020-08-10T19:43:01.992-0800][209.572s] GC(125) Metaspace: 256819K->256819K(1290240K) [2020-08-10T19:43:01.992-0800][209.572s] GC(125) Pause Young (Normal) (G1 Evacuation Pause) 604M->418M(703M) 39.392ms [2020-08-10T19:43:01.992-0800][209.572s] GC(125) User=0.13s Sys=0.00s Real=0.04s WARNING [DataReaderFacade]: Failed to read file. java.io.IOException: Failed to recognize file format. Failed to recognize file format. WARNING [AbstractGCModelLoaderImpl]: Failed to create GCModel from /Users/adrianstephen/jira/atlassian-jira-software-8.11.0-standalone/logs/atlassian-jira-gc-2020-08-10_19-39-32.log java.util.concurrent.ExecutionException: com.tagtraum.perf.gcviewer.imp.DataReaderException ... Caused by: java.io.IOException: Failed to recognize file format.
Workaround
Reply from https://github.com/chewiebug/GCViewer/issues/245
GCViewer relies for performance and complexity reasons on the presence of the "tags" and "level" information in the java unified logs generated by JDK 11 VMs (https://openjdk.java.net/jeps/158). Your logs are missing both (this part of the configuration:
-Xlog:gc*:file=/<path-to-file>:time,uptime:...).The readme gives examples of configurations, which GCViewer at this time is able to process:
-Xlog:gc:file="path-to-file" (uses defaults)
-Xlog:gc=info:file="path-to-file":tags,uptime,level (minimum configuration needed)
-Xlog:gc*=trace:file="path-to-file":tags,time,uptime,level (maximum configuration supported, additional tags ok, but ignored; additional decorations will break parsing)
If you just add "tags" and "level" to your configuration, GCViewer should be able to parse your log files.Best regards,
Jörg
JIRA Specific workaround for Linux
- Stop Jira
- Edit the JIRA_INSTALL/bin/set-gc-params.sh file
- Modify this line :
GC_JVM_PARAMETERS="-Xlog:gc*:file=$LOGBASEABS/logs/atlassian-jira-gc-%t.log:time,uptime:filecount=5,filesize=20M ${GC_JVM_PARAMETERS}"
to
GC_JVM_PARAMETERS="-Xlog:gc*:file=$LOGBASEABS/logs/atlassian-jira-gc-%t.log:tags,time,uptime,level:filecount=5,filesize=20M ${GC_JVM_PARAMETERS}"
Adding tags & level
- Start Jira
JIRA Specific workaround for Windows
- Stop Jira
- Edit the JIRA_INSTALL/bin/set-gc-params.bat file
- Modify this line :
set GC_JVM_PARAMETERS=-Xlog:gc*:file=\"%atlassian_logsdir%\atlassian-jira-gc-%%t.log\":time,uptime:filecount=5,filesize=20M %GC_JVM_PARAMETERS%
to
set GC_JVM_PARAMETERS=-Xlog:gc*:file=\"%atlassian_logsdir%\atlassian-jira-gc-%%t.log\":tags,time,uptime,level:filecount=5,filesize=20M %GC_JVM_PARAMETERS%
Adding tags & level
- Start Jira
JIRA Specific workaround for Windows when Jira is being run as a service
- Stop service
- Edit the JIRA_INSTALL/bin/set-gc-params-service.bat file
- Modify this line :
set GC_JVM_PARAMETERS=%JVM_GC_ARGS%;-Xlog:gc*:file=.\logs\atlassian-jira-gc-%%t.log:time,uptime:filecount=5,filesize=20M
to
set GC_JVM_PARAMETERS=%JVM_GC_ARGS%;-Xlog:gc*:file=.\logs\atlassian-jira-gc-%%t.log:tags,time,uptime,level:filecount=5,filesize=20M
Adding tags & level
- Reinstall service
- Start service