If you are having issues with Garbage Collection (too many pauses, too long of a pause, pauses causing cluster re-election, etc), you should look at enabling GC logging.

Keep in mind the following regarding GC logging:

  • GC log files are cleared out when the database is restarted.
  • There is a small additional load on the system when this logging is enabled.
  • Only enable this to investigate GC issues/impact, and then disable.

For Neo4j 2.x releases

Uncomment these lines in conf/neo4j-wrapper.conf:

#wrapper.java.additional=-Xloggc:data/log/neo4j-gc.log
#wrapper.java.additional=-XX:+PrintGCDetails
#wrapper.java.additional=-XX:+PrintGCDateStamps
#wrapper.java.additional=-XX:+PrintGCApplicationStoppedTime
#wrapper.java.additional=-XX:+PrintTenuringDistribution

And add this line:

wrapper.java.additional=-XX:+PrintGCCause

The log file will be written to: data/log/neo4j-gc.log

For Neo4j 3.x releases

Uncomment these lines below in conf/neo4j.conf that are prefaced by # dbms.:

# To enable GC Logging, uncomment this line
# dbms.logs.gc.enabled=true

# GC Logging Options
# see http://docs.oracle.com/cd/E19957-01/819-0084-10/pt_tuningjava.html#wp57013 for more information.
#dbms.logs.gc.options=-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+PrintTenuringDistribution

# Number of GC logs to keep.
# dbms.logs.gc.rotation.keep_number=5

# Size of each GC log that is kept.
# dbms.logs.gc.rotation.size=20m

The log file will be written to the logs directory as specified by here and named gc.log.<#>

Save the file and restart your server.

Details


Author:
Dave Gordon
Applicable versions:
2.0,2.1,2.2,2.3, 3.0
Keywords:
garbage collectionheapJVMloggingmemoryneo4j-2.0neo4j-2.1neo4j-2.2neo4j-2.3neo4j-3.0