performance - 批量 HTTP 请求性能提升

标签 performance rest http

我想知道通过执行 HTTP 批处理请求获得的性能增益。它是否只是将往返次数减少到一次而不是 n 次,其中 n 是 HTTP 请求的数量?如果是这样,我猜你可以保持 http 连接打开并通过发送你的 http 消息,完成后你可以关闭它以获得性能提升。

最佳答案

执行批处理请求的性能增益取决于您对它们执行的操作。然而,就像这里的不可知论方法一样:

如果您可以管理保持连接,是的,这意味着您不必为连接进行初始握手。这减少了一些开销,当然也节省了处理沿此连接的后续数据包所花费的时间。因此,您可以“流水线”请求并减少整体加载延迟(所有其他不考虑)。但是,HTTP1.1 中的请求仍然绑定(bind)为 FIFO,因此您可以挂断。这是批处理有用的地方。由于即使使用保持连接,您也可能会挂起(HTTP/2 将允许异步处理),您仍然可以在请求之间有一些显着的延迟。

这可以通过批处理进一步缓解。如果可能,您可以将后续请求所需的所有数据合并为一个,这样所有内容都会一起处理并作为一个响应发回。当然,与顺序方法相比,处理单个数据包可能需要更长的时间,但是每次吞吐量都会增加,因为请求-> 响应的往返延迟不会成倍增加。因此,您在请求处理速度方面获得了更好的性能提升。

当然,这种方法取决于您对请求的处理方式,以使其有效。如果您有很多用户使用大量数据执行批处理,有时批处理会给服务器带来太大压力,因此为了增加所有用户的总体并发吞吐量,您有时需要采用技术上较慢的顺序方法来平衡事情。但是,通过一些简单的监控和分析,您就会知道最好的方法。

和往常一样,不要过早优化 :)

关于performance - 批量 HTTP 请求性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189855/

相关文章:

performance - 简单的 Flutter ListView 不连贯的滚动

C libcurl - 测量下载速度和剩余时间

java - 创建自动化作业以使用 REST API 执行 azure runbook

通过 URL 的 HTTP 基本身份验证不适用于 Firefox?

MySQL 查询速度慢,发送/检查的行数等于 0

file - 最快的 Sha1 函数(Linux,最多 2GB 文件)

rest - Spring MVC 3.1 REST服务post方法返回415

rest - 重新验证功能到Elasticsearch客户的多种功能

javascript - 如何在不更改外部页面的情况下在 iframe 中提交 html 表单?

javascript - 是否可以在另一个请求中有一个 Angular js $http 请求?