[Neo] neo4j performance testing

Peter Neubauer peter.neubauer at neotechnology.com
Thu Feb 11 18:22:19 CET 2010

it wold be very cool if, when your tests are done, the code, sample
anonymous data and testbed could be accessible somewhere. Partly
because I think it is a great effort which others are interested in,
and partly because we probably could integrate it into the continuous
integration process to make sure things are not degrading, and maybe
speed it up and tweak it.



/peter neubauer

COO and Sales, Neo Technology

GTalk:      neubauer.peter
Skype       peter.neubauer
Phone       +46 704 106975
LinkedIn   http://www.linkedin.com/in/neubauer
Twitter      http://twitter.com/peterneubauer

http://www.neo4j.org             - Your high performance graph database.
http://www.tinkerpop.com      - Processing for Internet-scale graphs.
http://www.thoughtmade.com - Scandinavias coolest Bring-a-Thing party.

On Thu, Feb 11, 2010 at 1:55 PM, Dmitri Livotov <dmitri at livotov.eu> wrote:
> We started initial complex tests and db performs really well at the
> moment. Very nice thing that it does not "eat" heap excessively as most
> java dataengines.
> Here is what the test data and test cases, please correct/append them if
> you think that something is not optimal, we'd like to make a complete
> real usecase test and share the results, so they could be useful for
> anyone else.
> 1) Test database
> We've imported the entire linux server filesystem structure with
> hierarchy relations, relations to file/folder classes (million relations
> to single node case), also with copying file/folder attributes into
> their nodes. The total size is 3M of nodes, with almost 10 attributes
> per every node.
> 2) Test environment
> neo4j database in put into a web application, initialized in context
> listener and then single database instance is requested by all test
> servlets. Web application will be deployed to
> glassfish v3 app server with a 2G heap allocated with a total of 4G
> memory on the physical server (centos 5.2, 64 bit kernel)
> There are several test servlets in the web application, each servlet, on
> a request, performs the single operation (several low level operations
> with the db are grouped) and responds with either 200 code or 500 code
> (on any exception) and zero response size.
> Test client is a apache jmeter instance, running on another desktop
> machine, tied with a 100M link with the server on the same subnet via 1G
> switch.
> 3) Test cases
> servlet 0 - simulates static web page to see how the db load affects the
> entire app server. Does almost nothing - makes a random delay from 10 to
> 200 ms and finishes.
> servlet 1 - performs random node lookup by a primary key, changes 10
> node attributes and commits transaction
> servlet 2 - performs random node lookup by a primary key, then
> traversing the hieararchy until the end of graph (up and down), iterates
> it all in an empty loop.
> servlet 3 - long running one, requests all nodes (via traverse request
> from the top node), iterates them all and randomly adjust
> (add/remove/update) single attribute (no more than 100 attributes per
> cycle), then commits.
> Should we add more tests servlets you think can be useful for high load
> testing, maybe also you suggest to change/update the test data, say more
> depth levels, more relationships ?
> 4) Load factors
> servlet 0 is called from 100 parallel threads
> servlets 1 and 2 are called from 50 parallel threads (50 for each one,
> so 100 threads in total)
> servlet 3 is called from a single thread
> so we have 201 parallel threads in total.
> Thanks,
> Dmitri
> _______________________________________________
> Neo mailing list
> User at lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user

More information about the User mailing list