本文系 NebulaGraph 社区版 v3.8.0 的性能测试报告。
测试环境
服务器和压测机皆为物理机:
测试数据
测试数据采用 LDBC-SNB SF100 数据集,SF100 数据集大小为 100 G,共有 282,386,021 个点以及 1,775,513,185 条边。测试用的图空间分区数为 24,副本数为 3。
关于 LDBC-SNB
关联数据基准委员会(LDBC,Linked Data Benchmark Council),是图(Graph)和 RDF 数据管理的基准指南制定者。社交网路基准(SNB,Social Network Benchmark)是关联数据基准委员会(LDBC)开发的软件基准(Benchmark)之一。关于 LDBC-SNB 数据集,具体请参考以下文档:
- LDBC-SNB Specification:https://ldbcouncil.org/ldbc_snb_docs/ldbc-snb-specification.pdf
- LDBC-SNB Docs:GitHub - ldbc/ldbc_snb_docs: Specification of the LDBC Social Network Benchmark suite
- LDBC-SNB测试数据集生产工具:GitHub - ldbc/ldbc_snb_datagen_spark: Synthetic graph generator for the LDBC Social Network Benchmark, running on Spark
NebulaGraph Commit
- nebula-graphd version 7458486
- nebula-storaged version 7458486
- nebula-metad version 7458486
测试说明
- 压测工具使用基于 Go 语言的 k6,具体请参阅 k6 官方网站;客户端使用的是 nebula-go
- 图表中横坐标轴的 “50_vu”、“100_vu” 等中的 “vu” 表示的是 k6 使用的概念 “virtual user”,即性能测试中的并发数;50_vu 表示 50 个并发用户,100_vu 表示 100 个并发用户,以此类推…
- 性能基线使用正式发布的 v3.6.0 版本
- ResponseTime = Latency(服务端处理时长)+ 网络回传结果时长 + 客户端反序列化结果时长
基线测试
注:下图涉及的词语解释
- QPS 即吞吐率
- Latency 即服务端耗时
- ResponseTime 即客户端耗时
- RowSize 即请求返回行数