It might be necessary to use JMX to profile neo4j, which we are currently doing to address performance issues with Neo4j in combination with Windows Azure.
The first thing you will need to configure is additional switches in the neo4j-wrapper.conf file, here are mine:
Notice, that I am using a port number here, and this will allow remote JMX profiling, the reason for this is that in azure, the neo4j instance runs in a different user context than the remote desktop user, so we need a way to attach to the process, with VisualVM, we can do this via remote JMX.
Just add the neo4j JMX listener as a remote host. Then, if using the azure cloud:
- Remote desktop into the worker role hosting Neo4j
- Install the JDK
- Install VisualVM
- Configure the JMX Connectionas outlined below
- Right click Local and click Add JMX Connection:
From here we can now do profiling of the Neo4j application.