首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高响应时间与排队

高响应时间与排队
EN

Stack Overflow用户
提问于 2019-04-12 15:23:24
回答 3查看 186关注 0票数 2

假设我有一个供其他with服务内部使用的webserivce,平均响应时间为1分钟。与使服务返回请求的id、在后台处理请求并使客户端轮询结果相比,这种具有“同步”响应的服务的优缺点是什么?

HTTP连接保持活动状态超过一分钟有什么缺点吗?TCP的默认保持活动状态在这里很重要吗?

EN

回答 3

Stack Overflow用户

发布于 2019-04-12 18:59:37

根据您的应用程序,这可能很重要。值得一提的是!

HTTP协议是同步

人们普遍误解HTTP是异步的。Http是同步协议,但您的客户端可以异步处理它。例如,当您使用http调用任何服务时,您的http客户端可能会调度在后台线程(异步)上。然而,http调用将一直等待,直到它的超时或响应返回,在此期间,http调用链同步等待。

套接字

因为HTTP使用套接字,并且对套接字有硬性限制。每个HTTP连接(如果每次都创建新的连接)打开新的套接字。如果您一次有数百个请求,您可以想象有多少http调用被同步调度,并且您可能会运行套接字。不确定是否适用于其他操作系统,但在windows上,即使你完成了请求套接字,它们也不会立即被释放,并且会停留几分钟。

网络连接

不建议将http连接保持很长时间。如果您部分或完全失去网络,该怎么办?你的http请求会超时,你根本不知道它的状态。

记住所有这些事情,最好在后台进程上调度长时间运行的任务。

票数 0
EN

Stack Overflow用户

发布于 2019-04-12 19:08:18

如果您让用户等待,而您的长作业正在服务器上运行,那么您在等待时占用了一个有价值的HTTP连接。

从RestFul的角度来看,最佳实践是回复HTTP202(已接受),并返回带有轮询链接的响应。

如果您想在等待时挂起客户端,则需要在客户端设置请求超时。

如果在两者之间有一些防火墙,那么如果它们在一段时间内处于不活动状态,则可能会断开连接。

票数 0
EN

Stack Overflow用户

发布于 2019-04-14 21:24:26

更高的响应吞吐量

通常,您会希望您的OLTP (Web服务器)尽可能快地响应,因为您在后台排队任务,您的web服务器可以处理更多的请求,从而导致更高的响应吞吐量和处理能力。

内存更友好的

通过消息队列在后台作业上对长时间运行的任务进行排队,可防止滥用web服务器内存。这很好,因为它会增加应用程序的内存不足阈值。

对服务器崩溃的恢复能力更强

如果您在后台对任务进行排队,并且出现错误,则可以将作业排入死信队列,从而帮助您最终修复问题并重新处理导致未处理异常的请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55646479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档