#***************************************************************** # Neo4j configuration # # For more details and a complete list of settings, please see # https://neo4j.com/docs/operations-manual/current/reference/configuration-settings/ #***************************************************************** # The name of the default database #initial.dbms.default_database=neo4j # Paths of directories in the installation. server.directories.data=/var/lib/neo4j/data server.directories.plugins=/var/lib/neo4j/plugins server.directories.logs=/var/log/neo4j server.directories.lib=/usr/share/neo4j/lib #server.directories.run=run #server.directories.licenses=licenses #server.directories.transaction.logs.root=data/transactions server.logs.config=/etc/neo4j/server-logs.xml server.logs.user.config=/etc/neo4j/user-logs.xml server.directories.import=/var/lib/neo4j/import dbms.usage_report.enabled=false #******************************************************************** # Memory Settings #******************************************************************** # # Memory settings are specified kibibytes with the 'k' suffix, mebibytes with # 'm' and gibibytes with 'g'. # If Neo4j is running on a dedicated server, then it is generally recommended # to leave about 2-4 gigabytes for the operating system, give the JVM enough # heap to hold all your transaction state and query context, and then leave the # rest for the page cache. # Java Heap Size: by default the Java heap size is dynamically calculated based # on available system resources. Uncomment these lines to set specific initial # and maximum heap size. server.memory.heap.initial_size={{ neo4j_heap_initial_size }} server.memory.heap.max_size={{ neo4j_heap_max_size }} # The amount of memory to use for mapping the store files. # The default page cache memory assumes the machine is dedicated to running # Neo4j, and is heuristically set to 50% of RAM minus the Java heap size. server.memory.pagecache.size={{ neo4j_pagecache_size }} # Limit the amount of memory that all of the running transaction can consume. # The default value is 70% of the heap size limit. dbms.memory.transaction.total.max={{ neo4j_memory_transaction_total_max }} # Limit the amount of memory that a single transaction can consume. # By default there is no limit. #db.memory.transaction.max=16m #***************************************************************** # Network connector configuration #***************************************************************** # With default configuration Neo4j only accepts local connections. # To accept non-local connections, uncomment this line: server.default_listen_address={{ neo4j_default_listen_address }} server.default_advertised_address={{ neo4j_default_advertised_address }} # Bolt connector server.bolt.enabled=true server.bolt.tls_level=DISABLED server.bolt.listen_address=:7687 server.bolt.advertised_address=:7687 # HTTP Connector. There can be zero or one HTTP connectors. server.http.enabled=true server.http.listen_address=:7474 server.http.advertised_address=:7474 # HTTPS Connector. There can be zero or one HTTPS connectors. server.https.enabled=false #***************************************************************** # Logging configuration #***************************************************************** # To enable HTTP logging, uncomment this line dbms.logs.http.enabled=true # To enable GC Logging, uncomment this line #server.logs.gc.enabled=true # GC Logging Options # see https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-BE93ABDC-999C-4CB5-A88B-1994AAAC74D5 #server.logs.gc.options=-Xlog:gc*,safepoint,age*=trace # Number of GC logs to keep. #server.logs.gc.rotation.keep_number=5 # Size of each GC log that is kept. #server.logs.gc.rotation.size=20m #***************************************************************** # Miscellaneous configuration #***************************************************************** # Retention policy for transaction logs needed to perform recovery and backups. db.tx_log.rotation.retention_policy=2 days 2G #******************************************************************** # JVM Parameters #******************************************************************** # G1GC generally strikes a good balance between throughput and tail # latency, without too much tuning. server.jvm.additional=-XX:+UseG1GC # Have common exceptions keep producing stack traces, so they can be # debugged regardless of how often logs are rotated. server.jvm.additional=-XX:-OmitStackTraceInFastThrow # Make sure that `initmemory` is not only allocated, but committed to # the process, before starting the database. This reduces memory # fragmentation, increasing the effectiveness of transparent huge # pages. It also reduces the possibility of seeing performance drop # due to heap-growing GC events, where a decrease in available page # cache leads to an increase in mean IO response time. # Try reducing the heap memory, if this flag degrades performance. server.jvm.additional=-XX:+AlwaysPreTouch # Trust that non-static final fields are really final. # This allows more optimizations and improves overall performance. # NOTE: Disable this if you use embedded mode, or have extensions or dependencies that may use reflection or # serialization to change the value of final fields! server.jvm.additional=-XX:+UnlockExperimentalVMOptions server.jvm.additional=-XX:+TrustFinalNonStaticFields # Disable explicit garbage collection, which is occasionally invoked by the JDK itself. server.jvm.additional=-XX:+DisableExplicitGC # Restrict size of cached JDK buffers to 1 KB server.jvm.additional=-Djdk.nio.maxCachedBufferSize=1024 # More efficient buffer allocation in Netty by allowing direct no cleaner buffers. server.jvm.additional=-Dio.netty.tryReflectionSetAccessible=true # Exits JVM on the first occurrence of an out-of-memory error. Its preferable to restart VM in case of out of memory errors. # server.jvm.additional=-XX:+ExitOnOutOfMemoryError # Expand Diffie Hellman (DH) key size from default 1024 to 2048 for DH-RSA cipher suites used in server TLS handshakes. # This is to protect the server from any potential passive eavesdropping. server.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048 # This mitigates a DDoS vector. server.jvm.additional=-Djdk.tls.rejectClientInitiatedRenegotiation=true # Enable remote debugging #server.jvm.additional=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 # This filter prevents deserialization of arbitrary objects via java object serialization, addressing potential vulnerabilities. # By default this filter whitelists all neo4j classes, as well as classes from the hazelcast library and the java standard library. # These defaults should only be modified by expert users! # For more details (including filter syntax) see: https://openjdk.java.net/jeps/290 #server.jvm.additional=-Djdk.serialFilter=java.**;org.neo4j.**;com.neo4j.**;com.hazelcast.**;net.sf.ehcache.Element;com.sun.proxy.*;org.openjdk.jmh.**;!* # Increase the default flight recorder stack sampling depth from 64 to 256, to avoid truncating frames when profiling. server.jvm.additional=-XX:FlightRecorderOptions=stackdepth=256 # Allow profilers to sample between safepoints. Without this, sampling profilers may produce less accurate results. server.jvm.additional=-XX:+UnlockDiagnosticVMOptions server.jvm.additional=-XX:+DebugNonSafepoints # Open modules for neo4j to allow internal access server.jvm.additional=--add-opens=java.base/java.nio=ALL-UNNAMED server.jvm.additional=--add-opens=java.base/java.io=ALL-UNNAMED server.jvm.additional=--add-opens=java.base/sun.nio.ch=ALL-UNNAMED # Enable access to JDK vector API # server.jvm.additional=--add-modules=jdk.incubator.vector # Disable logging JMX endpoint. server.jvm.additional=-Dlog4j2.disable.jmx=true # Limit JVM metaspace and code cache to allow garbage collection. Used by cypher for code generation and may grow indefinitely unless constrained. # Useful for memory constrained environments #server.jvm.additional=-XX:MaxMetaspaceSize=1024m #server.jvm.additional=-XX:ReservedCodeCacheSize=512m # Allow big methods to be JIT compiled. # Useful for big queries and big expressions where cypher code generation can create large methods. #server.jvm.additional=-XX:-DontCompileHugeMethods #******************************************************************** # Other Neo4j system properties #******************************************************************** browser.remote_content_hostname_whitelist="localhost, guides.neo4j.com" dbms.security.http_access_control_allow_origin="*" dbms.security.procedures.allowlist=gds.*,apoc.* dbms.security.procedures.unrestricted=gds.*,apoc.* db.lock.acquisition.timeout=10s