【问题标题】:Spray and akka-http throughput decreased significantly on response length change响应长度变化后,Spray 和 akka-http 吞吐量显着下降
【发布时间】:2016-10-10 21:47:48
【问题描述】:

我对 spray 和 akka-http 进行了基准测试,以了解我可以获得的可能吞吐量。测试的应用程序很简单。它在静态 GET 路径上返回静态输出。但是在这两个框架的情况下,当静态响应长度从 7 个字符增加到 ~2040 个字符时,吞吐量从 ~64000 下降到 ~22000 rps。

还有其他人经历过这种行为吗?如何改善这种情况?

测试代码可以在这里找到:gist

它的灵感来自this question 中描述的测试。

使用过的版本:

ubuntu 14.04、scala 2.11.8、oracle jdk 1.8

akka-http: 2.4.11

喷雾:1.3.1 和 akka 2.3.6

Tests results

【问题讨论】:

  • 您返回的数据量是原来的 300 倍,但速度只有 3 倍。这听起来仍然不错。因此,您从 7*64000 = 448000 B/s 提升到 2040*22000 = 44880000 B/s,总体上仍然是一个相当大的增长。
  • 嗯,wrk 显示从 ~9MB/s 增加到 ~11MB/s。但我没有从 AWS CloudWatch 中看到类似于网络饱和的东西。我不认为网络是我的瓶颈。我也没有看到 CPU 或内存饱和:CPU 使用率从 80% 下降到 60%。内存从 0.5GB 增加到 1.5GB(系统中有 14GB 可用)。 CPU 中断没有显着增加。那么为什么 spray/akka-http 应该能够处理更少的请求呢?
  • @jrudolph,对不起。我重复了我的测试,发现了一个错误。 MB/s 的吞吐量从 ~9MB/s 增加到 ~70MB/s。我还在基准集中添加了带有 scalatra 的变体(代码被添加到相同的要点),并且看到了类似的吞吐量和长输出。它看起来像网络带宽限制。另一方面,使用默认参数从客户端到服务器的 iperf 给了我大约 88MB/s。我怎样才能更好地检查这个假设?测试结果可见here

标签: performance scala jvm spray akka-http


【解决方案1】:

看来是网络问题。
@jrudolph 感谢您强调网络吞吐量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多