In our stack, we use neo4j and are faced with classic performance issues: the application runs slowly as soon as it requires data from neo4j .
Listening only to my courage (pun intended) I started JVisualVM and did the profiling of the application.
This application is hosted on a JavaEE server (Glassfish) and uses the quasi-semantic stack of Empire-RDF , Blueprints and neo4j . Access to neo4j is offered by the JCA neo4j-connector .
As shown in the screenshot, there is strong evidence that there is a bottleneck in the search for neo4j.

My question is double but simple.
- Is this performance level normal? (I think no)
- What can I do to improve these features?
EDIT here are some testing information that should educate both of you.
My graphics structure is unknown to me: since I use Empire-RDF on top of Blueprints / Sesame / Neo4J, I only know the Java objects that I manipulate, which are ten interrelated classes, and they unfortunately are in the very heart of our business, so I donβt I can open them.
Consider, for this example, they create a tree of visual elements associated with objects representing URI objects.
I have a maven test that performs a combination of read / write operations (I will say that there are 20 to 50 JPA operations). This maven test passes after 300 seconds .
At a lower level
- application
- runs on Windows 7 and Mac OS X 10.6 with various under versions of Java 1.6.
- The application is hosted on Glassfish 3.1.1.
- neo4j DB is version 1.5, accessed through the neo4j-connector for the JCA (there are no settings made to the default settings).
- Sesame - version 2.6.0
- drawings version 1.1
- Empire-RDF - version 0.7
As the last world, immersion in the jVisualVM sampler shows that most of the application time is spent on these calls to NodeManager#getNodeForProxy .
source share