【问题标题】:HTTP client for throughput - Netty vs Apache HttpAsyncClient用于吞吐量的 HTTP 客户端 - Netty 与 Apache HttpAsyncClient
【发布时间】:2016-05-29 10:33:37
【问题描述】:

我有兴趣从单台机器每秒执行大约 50 个 HTTP 请求。我不太关心延迟,但我确实关心吞吐量。

我正在尝试决定是使用 Apache HttpAsyncClient 还是使用 Netty。有人可以阐明每个关于我的问题的优势吗?

我找到了这个comparison,但我希望能更详细地解释哪个更好以及适用于什么用例。此外,比较是否意味着使用具有 200 个线程的同步 apache HTTP 客户端比其他选项更好? 200个线程是不是有点太多了(假设我使用的是一台4核、每核2个线程和12GB RAM的普通计算机)?

提前致谢

【问题讨论】:

  • 这些基准的主要问题是,在现实生活中你有更多的线程和更多的噪音,所以你不能真正期望在生产中得到类似的结果,除非你选择异步 IO 选项。您正在考虑获得更多的吞吐量,并且正如预期的那样,Netty 在他们的基准测试中赢得了巨大的胜利。我们在广泛的应用程序中非常成功地使用了 Netty,它从来没有让我们失望过。您可以使用 ning async-http-client,然后您不必自己实现它 - github.com/AsyncHttpClient/async-http-client。希望这会有所帮助
  • @EranHarel 它有很大帮助。你有没有比较过 Apache 异步客户端和 ning 客户端?
  • 在我们的用例中使用 ning 可以获得更好的吞吐量。当然,您应该自己测试一下。不要相信互联网上的随机帖子,或 StackOverflow 上随机的家伙的话;)
  • 感谢您的提示。把它写成答案,我会接受的:)

标签: java multithreading netty performance-testing apache-httpasyncclient


【解决方案1】:

这些基准测试的主要问题是,在现实生活中,您有更多的线程和更多的噪音,因此除非您选择异步 IO 选项,否则您无法真正期望在生产中获得类似的结果。

您正在寻求获得更多的吞吐量,并且正如预期的那样,基于 Netty 的客户在他们的基准测试中大获全胜。所以这可能是你最好的选择。

我们非常成功地将 Netty 用于各种应用程序,而且它从未让我们失望。可以使用 ningasync-http-client,这样就不用自己实现客户端了。

但请注意,正如我在 cmets 中所述,我的回答基于我的个人经验和我们的生产指标。永远不要相信您在互联网上看到的随机基准帖子,也不要相信 StackOverflow 的答案。自己测试一下;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2020-04-10
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2018-10-26
    相关资源
    最近更新 更多