【发布时间】: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