[Neo] neo4j performance testing

Raul Raja Martinez raulraja at gmail.com
Thu Feb 11 16:17:32 CET 2010


Hi DMitri, are you running JMeter distributed with many agents?
Is the sample data sent to each servlet for each JMeter agent the same?
Our experience with JMeter is that when running multiple threads on a single
machine the numbers don't really give you a close grasp or reality. Also
their http client seems slower than other clients like command line "siege".

2010/2/11 Dmitri Livotov <dmitri at livotov.eu>

> 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
>



-- 
Raul Raja


More information about the User mailing list