java - HTTP请求实时应用,性能技巧

标签 java real-time okhttp http2

我正在使用 Java 的 OkHttp3 将多个 POST 请求发送到同一 REST 端点,该端点是与我位于同一区域的第三方 AWS 服务器。我需要尽快处理这些请求(即使 1 毫秒也算)。

现在我应用的唯一性能技巧非常基本:我使用 HTTP2,因此连接套接字被重用,并且我异步发送请求,因此在发送所有请求之前它不会等待任何响应。

为了提高性能,我还应该考虑哪些其他技巧?

编辑:如果这因任何原因很重要,我目前正在通过 URL 传递所有参数,请求正文为空。我可能会将它们作为 body 的一部分传递,但我武断地决定不这样做。

最佳答案

OkHttp 是低延迟的不错选择。 Netty 可能是高并发的更好选择,但这不是您的用例。

您可能想要测量禁用 gzip 时会发生什么。您需要删除网络拦截器中的 accept-encoding 请求 header 。这可能会使事情变得更快,但只是因为您使用的是快速链接。

要研究的另一件事是禁用 Nagle’s algorithm 。您需要调用 Socket.setTcpNoDelay(),您可以使用自定义 SocketFactory 来执行此操作。

OkHttp 的下一个版本将支持未加密的 HTTP/2。如果您对此表示同意(这几乎总是一个坏主意),那么删除 TLS 可能会给您带来(小) yield 。这里要非常小心;明文通信是个坏消息。

关于java - HTTP请求实时应用,性能技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50823554/

相关文章:

java - 使用 Java 进行负载测试 - 计时器任务与调度程序

java - 获取 ArrayList 的当前值 - Java

java - 谁能告诉我为什么它的计算结果为 0?

python - 通过Python实时操作

java - Android (Java) 实时音频输入(麦克风和 USB)和输出

android - 如何使用 ok Http 添加多个 header

java - 如何在 Android 应用程序中指定和添加自定义打印机?

android - 为什么 okhttp3.Interceptor 不起作用?

android - OKHTTP 响应 XMLPullParser

c++ - 如何克服C++对嵌入式系统缺乏工具支持的问题?