{"id":15994232,"url":"https://github.com/jexp/neo4j-twitter-load","last_synced_at":"2025-04-05T00:15:41.083Z","repository":{"id":66743979,"uuid":"75290730","full_name":"jexp/neo4j-twitter-load","owner":"jexp","description":"Simple Load Generator for a Neo4j 3.1 Causal Cluster","archived":false,"fork":false,"pushed_at":"2017-02-27T13:56:50.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-10T08:31:11.833Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jexp.png","metadata":{"files":{"readme":"readme.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-01T12:31:54.000Z","updated_at":"2016-12-01T12:32:30.000Z","dependencies_parsed_at":"2023-06-29T13:14:02.031Z","dependency_job_id":null,"html_url":"https://github.com/jexp/neo4j-twitter-load","commit_stats":{"total_commits":7,"total_committers":3,"mean_commits":"2.3333333333333335","dds":0.2857142857142857,"last_synced_commit":"4081ad6b1455f0acda18af0b202e2860422eb2bd"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexp%2Fneo4j-twitter-load","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexp%2Fneo4j-twitter-load/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexp%2Fneo4j-twitter-load/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexp%2Fneo4j-twitter-load/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jexp","download_url":"https://codeload.github.com/jexp/neo4j-twitter-load/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266570,"owners_count":20910837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T07:07:32.022Z","updated_at":"2025-04-05T00:15:41.064Z","avatar_url":"https://github.com/jexp.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"== Simple Neo4j Load Generator for 3.1 Causal Cluster\n\nThis is a load generator for a *Neo4j 3.1 Causal Cluster* with _core_ servers and _read-replicas_.\nIt uses *read-only-* and *read-write-sessions*, *bookmarks* for read-your-own-writes and supports `bolt+routing://` urls for smart routing.\n\nThis load generator is a minimal variant of the comprehensive test suites we run internally in our quality testing.\n\n=== Build \u0026 Run\n\nYou can run this load generator with:\n\n----\nmvn compile exec:java -Dexec.mainClass=neo4j.load.twitter.LoadGenerator number-of-threads bolt[+routing]://user:pass@host:port max-operations-or-minus-one\n----\n\nOr first build\n\n----\nmvn clean install\n----\n\nand then run\n\n----\njava -jar target/neo4j-twitter-load-1.0-SNAPSHOT-jar-with-dependencies.jar 32 bolt+routing://user:pass@host:port 10000000\n----\n\nIf you run it without parameters it defaults to:\n\n----\njava -jar target/neo4j-twitter-load-1.0-SNAPSHOT-jar-with-dependencies.jar processors bolt://neo4j:test@localhost -1\n----\n\nYou can use the `NEO4J_BOLT_URL` environment variable.\n\nDuring the run, each thread prints the throughput every 10k transactions.\n\nAfter the run, the recorded latency (in Millis) is reported as a histogram (using hdr-histogram, to draw a chart use http://hdrhistogram.github.io/HdrHistogram/plotFiles.html[this service]).\n\nHere is a sample session from my local machine:\n\n----\njava -jar target/neo4j-twitter-load-1.0-SNAPSHOT-jar-with-dependencies.jar 2 bolt://neo4j:test@localhost 100000\n\nUsage: java -jar neo4j-twitter-load-1.0-SNAPSHOT-jar-with-dependencies.jar concurrency bolt+routing://user:pass@host:port maxOperations-or-minus-one\nInitialize with 1000 names.\nFinished warmup 1000 operations in 1 seconds.\n1. TX/S: 500\n0. TX/S: 500\n1. TX/S: 465\n0. TX/S: 465\n1. TX/S: 476\n0. TX/S: 476\n1. TX/S: 476\n0. TX/S: 476\n0. TX/S: 471\n1. TX/S: 471\n       Value     Percentile TotalCount 1/(1-Percentile)\n\n     208.127 0.000000000000          1           1.00\n    1396.735 0.500000000000      50488           2.00\n    2693.119 0.750000000000      75704           4.00\n    3596.287 0.875000000000      88317           8.00\n    4997.119 0.937500000000      94630          16.00\n    6983.679 0.968750000000      97782          32.00\n    9543.679 0.984375000000      99355          64.00\n   12509.183 0.992187500000     100145         128.00\n   16236.543 0.996093750000     100539         256.00\n   19562.495 0.998046875000     100735         512.00\n   23609.343 0.999023437500     100834        1024.00\n   26427.391 0.999511718750     100883        2048.00\n   29163.519 0.999755859375     100908        4096.00\n   29835.263 0.999877929688     100920        8192.00\n   30179.327 0.999938964844     100927       16384.00\n   30441.471 0.999969482422     100929       32768.00\n   30523.391 0.999984741211     100933       65536.00\n   30523.391 1.000000000000     100933\n#[Mean    =     2075.971, StdDeviation   =     2229.175]\n#[Max     =   174850.047, Total count    =       100932]\n#[Buckets =           24, SubBuckets     =         2048]\n----\n\n=== Run in docker\nYou can use a docker image to run this load test by executing:\n\n----\ndocker run -e CONCURRENCY=2 -e NEO4J_BOLT_URL=bolt://neo4j:test@neo4jhost 100000 -e MAX_OPERATIONS=100000 jexp/neo4j-twitter-load:latest\n----\n\n=== Operations\n\nIt will execute 4 different operations with different probabilities\n\n1. create an account: create a new user with provided handle. (1%)\n2. publish a tweet: disseminate a \u003c140 character message. (15%)\n3. read stream: get a time ordered list of 10 tweets from the followed users. (76%)\n4. get a recommendation: receive a solicitation of potentially interesting users to follow.\t (8%)\n5. -\u003e follow a user: subscribe to the tweets of another user. (-\u003e30%)\n\nI took the ideas from http://web.archive.org/web/20160811165359/https://thinkaurelius.com/2012/08/06/titan-provides-real-time-big-graph-data/[Aurelius Titan Benchmark]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjexp%2Fneo4j-twitter-load","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjexp%2Fneo4j-twitter-load","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjexp%2Fneo4j-twitter-load/lists"}