Skip to content

Tuning Linux & the JVM for Graph Databases

James Thornton edited this page Jun 21, 2013 · 12 revisions

Tuning Linux & the JVM for Graph Databases

Tuning the Linux kernel, file system, and JVM options is important to get the best performance out of any database. Here are recommendations and guidelines for different Blueprints databases. These are general best practices, but as always, you may need to adjust them for your use case.

Neo4j

JVM Options

Linux Kernel

Linux File System

EC2

OrientDB

JVM Options

Linux Kernel

Linux File System

EC2

Titan

JVM Options

Here are some Java options recommended by @xedin ...

Tuning

-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=1 -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly

Logging

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -Xloggc:/var/log/rexster-gc-date +%s.log

See https://github.com/tinkerpop/rexster/issues/271#issuecomment-13160693

ElasticSearch also recommends/defaults to pretty much the same options: https://github.com/elasticsearch/elasticsearch-servicewrapper/blob/master/service/elasticsearch.conf#L40

Here's a detailed post explaining them: http://jprante.github.io/2012/11/28/Elasticsearch-Java-Virtual-Machine-settings-explained.html

Linux Kernel

Linux File System

EC2

Dex

JVM Options

Linux Kernel

Linux File System

EC2

Sail

JVM Options

Linux Kernel

Linux File System

EC2

Clone this wiki locally