Neo4j性能测试
准备测试数据#
性能测试需要先准备数据,以评估 neo4j 在大数据量情况下的性能。
幸运的是网上可以下载到一个很大的数据库,该库是将 Stackoverflow 网站的数据(包括:问题,答案,标签,用户)转换后得来的。
这个库中包含 50,752,488个节点和 123,922,676条边,用来做性能测试足够用了。
其说明详见:https://neo4j.com/docs/getting-started/appendix/example-data/#example-datasets
通过下面地址可以下载:
wget -c http://example-data.neo4j.org/so.dump
虽然 neo4j 目前已经到了5.0版本,但下载到的dump文件是4.0版本的格式,无法导入到5.0版本中,所以本次决定先对4.0版本做性能测试。
通过下面命令可以将dump文件导入到neo4j库中(开始导入之前,先启动 neo4j 让其对 data 目录完成初始化,之后再用下面命令导入数据):
docker run --interactive --tty --rm \
--volume=${PWD}/data:/data \
--volume=${PWD}/so.dump:/backups/neo4j.dump \
neo4j:4.4.32 \
neo4j-admin load --force --from=/backups/neo4j.dump
等待导入完成,然后用下面命令启动 neo4j:
docker run \
--rm \
--volume=${PWD}/data:/data \
--publish=7474:7474 --publish=7687:7687 \
--env NEO4J_dbms_memory_pagecache_size=6G \
--env NEO4J_dbms_memory_heap_initial__size=16G \
--env NEO4J_dbms_memory_heap_max__size=16G \
--env NEO4J_dbms_allow__upgrade=true \
neo4j:4.4.32
由于导入的数据量较大,这里设置 pagecache 和 heap 的大小来确保其可以正常运行,同时也限制了最大的 heap 大小避免将主机内存耗尽。
启动后 neo4j 需要一段时间进行数据迁移,在我测试的服务器上大概需要5~6分钟时间。
之后就可以愉快的进行性能测试了。