【问题标题】:AWS Neptune PerformanceAWS 海王星性能
【发布时间】:2019-01-10 07:28:02
【问题描述】:

我正在将数据从我们的数据库(一个 rdf 存储数据库)传输到 AWS Neptune,但我遇到了一些性能问题。

我在与 Neptune 相同的 vpc 上有一个 db.r4.large Neptune 实例和 ec2 实例。

基本上,我正在尝试使用以下 http 请求将数据摄取到 Neptune:<myinstance>:8182/sparql

实际上,我从我的 ec2 实例发送 http 请求,似乎 Neptune 处理时间很慢。另外,海王星的处理好像不是并行的。

以下是我的测试和结果:

  1. 我向 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.037s
    user 0m0.044s
    sys 0m0.062s

    tcpdump 可以清楚地证明收到 Neptune 的响应延迟了 34 秒。

  2. 当我发送一个100m的数据时,花了1多分钟。

  3. 当我并行发送相同的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.752s
    user 0m0.137s
    sys 0m0.101s

    我使用tcpdump 并从wireshark 清楚地看到请求是并行发送的,但是在 Neptune 为这两个请求返回 200 OK 之前有大约 1 分钟的延迟。

    其实海王星的处理好像不是并发的。

    请求是在时间 12 发送的,200 ok 对于这两个请求都是在时间 69 发送的,这正好是 57 秒的延迟。

  4. 我尝试将 Neptune 实例大小增加到 db.r4.xlargedb.r4.2xlarge, db,但我得到了相同的性能。

  5. 我尝试以gzip 格式发送压缩数据以缩短时间,但 Neptune 似乎不支持它(检查wireshark 请求已正确发送)。

我想听听您对我的测试和结果的意见:

  1. 为什么单个 http 请求的性能很慢?
  2. 为什么 Neptune 的处理不是并行的?

【问题讨论】:

  • 你不应该问这个 Amazon Neptune 支持吗? Afaik,这是一个商业产品,既没有实现细节,也没有关于数据结构、查询优化器、索引等的任何细节在线。尤其是为什么这样的问题,“为什么 Neptune 的处理不是并行的?” - 除了开发人员之外,还有谁能正确回答这个问题,即无需任何猜测?
  • 我也在 aws 论坛上问过这个问题,但我也在这里发布,看看其他人是否也面临同样的问题。
  • 好的,那么提及跨站发帖总是好的——如果你能在那里得到答案,也可以作为未来的参考。
  • 嗨,你有什么最新消息吗?
  • 我向 aws 开了一张票,他们正在调查我的数据。目前,我服务器上的速率为 10000 条记录/秒。我与 aws 团队开会,他们建议将我的实例大小增加到 8xlarge并在大小超过千兆的文件上运行加载 api,但它没有帮助。所以一旦我的票被解决,我将更新线程..

标签: performance http sparql amazon-neptune


【解决方案1】:

您正在将time(客户端往返时间)的输出与服务器报告的totalEllapsedMillis 进行比较。前者包括您的网络传输时间,而后者只是数据库从接受请求开始计算查询所花费的时间。您对传输 100MB 文件所需的时间有任何衡量标准吗?

Neptune 会并行处理查询(实际上,并行量随您的实例类型而变化)。如果您的查询与在线上花费的时间相比真的很小,那么它可能看起来像是一个接一个完成的结果。我想查看您的实验更详细的细节,看看您的设置是否存在问题。

首先,您的客户端和数据库端点之间的网络延迟是多少? (例如,您向 /status API 发出请求需要多长时间)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多