【发布时间】:2019-01-10 07:28:02
【问题描述】:
我正在将数据从我们的数据库(一个 rdf 存储数据库)传输到 AWS Neptune,但我遇到了一些性能问题。
我在与 Neptune 相同的 vpc 上有一个 db.r4.large Neptune 实例和 ec2 实例。
基本上,我正在尝试使用以下 http 请求将数据摄取到 Neptune:<myinstance>:8182/sparql。
实际上,我从我的 ec2 实例发送 http 请求,似乎 Neptune 处理时间很慢。另外,海王星的处理好像不是并行的。
以下是我的测试和结果:
-
我向 Neptune 发送了以下请求:
time curl -X POST -d @/tmp/my_file_32m.txt http://myneptune-poc.c0zm6uyrnnwp.us-east-1.neptune.amazonaws.com:8182/sparql/tmp/my_file_32m.txt包含 sparql 插入命令,这个请求的时间是34.037s而 Neptune 声称它花费了21.846 s:{ “类型”:“提交”, “totalElapsedMillis”:21846 }
real 0m34.037suser 0m0.044ssys 0m0.062stcpdump可以清楚地证明收到 Neptune 的响应延迟了 34 秒。 当我发送一个100m的数据时,花了1多分钟。
-
当我并行发送相同的32m文件时,时间是2的倍数:
time xargs -I % -P 8 curl -vX POST -d @/tmp/my_file_32m.txt "http://myneptune-poc.c0zm6uyrnnwp.us-east-1.neptune.amazonaws.com:8182/sparql" < <(printf '%s\n' {1..2})<{ “类型”:“提交”, “totalElapsedMillis”:29797 } { “类型”:“提交”, “totalElapsedMillis”:30362 }
real 0m57.752suser 0m0.137ssys 0m0.101s我使用
tcpdump并从wireshark清楚地看到请求是并行发送的,但是在 Neptune 为这两个请求返回200 OK之前有大约 1 分钟的延迟。其实海王星的处理好像不是并发的。
请求是在时间 12 发送的,
200 ok对于这两个请求都是在时间 69 发送的,这正好是 57 秒的延迟。 我尝试将 Neptune 实例大小增加到
db.r4.xlarge和db.r4.2xlarge, db,但我得到了相同的性能。- 我尝试以
gzip格式发送压缩数据以缩短时间,但 Neptune 似乎不支持它(检查wireshark请求已正确发送)。
我想听听您对我的测试和结果的意见:
- 为什么单个 http 请求的性能很慢?
- 为什么 Neptune 的处理不是并行的?
【问题讨论】:
-
你不应该问这个 Amazon Neptune 支持吗? Afaik,这是一个商业产品,既没有实现细节,也没有关于数据结构、查询优化器、索引等的任何细节在线。尤其是为什么这样的问题,“为什么 Neptune 的处理不是并行的?” - 除了开发人员之外,还有谁能正确回答这个问题,即无需任何猜测?
-
我也在 aws 论坛上问过这个问题,但我也在这里发布,看看其他人是否也面临同样的问题。
-
好的,那么提及跨站发帖总是好的——如果你能在那里得到答案,也可以作为未来的参考。
-
嗨,你有什么最新消息吗?
-
我向 aws 开了一张票,他们正在调查我的数据。目前,我服务器上的速率为 10000 条记录/秒。我与 aws 团队开会,他们建议将我的实例大小增加到 8xlarge并在大小超过千兆的文件上运行加载 api,但它没有帮助。所以一旦我的票被解决,我将更新线程..
标签: performance http sparql amazon-neptune