API服务器的标准可接受请求/响应超时是什么(以及为什么)



我正在开发web客户端和API服务器。我一直在做一些关于默认超时的研究,有些是800米,有些是1200米。然而,我找不到这个任意数字背后的原因。有人能帮我吗?对任意数字背后的解释会有很大帮助。

谢谢,

TLDR:请参阅以"任意数";下面用粗体显示。剩下的只是关于这个主题的额外信息。


虽然你可能知道这一点,或者已经在你的研究中读过这一点了,但我可以分享以下想法:

通常,超时是根据查询的预期复杂性、要处理的数据量以及查询发生时系统的预期负载(或在修改超时方面可能需要注意的任何其他预期操作)来设置的。此外,这可以基于API向其他API发出的处理传入请求的请求数量以及这些期望值

当计划一个"最佳猜测"软件时,通常会预期任意数(开发软件的人的"最佳推测");如果不管发生什么都没有问题,则大多数请求都应该在这个时间的某个部分内完成;或";这没什么好担心的"场景类型。因此,超时的默认值在很大程度上是基于这样的假设,即它们代表"超时"的绝大多数;"可接受";已完成但不存在问题的请求。它通常设置在";这应该是充足的时间";以及";这个请求很可能出了严重的问题,让我们结束它吧"并且大多数成功的请求通过该测试"0";默认";。

如果您的操作可能需要几分钟时间,并且您预计这可能在没有实际问题的情况下发生,您可能希望将超时设置为高于默认值,这样当没有实际问题时,您的请求就不会超时(例如,大多数商业API都对请求的数量和必须完成的时间有限制,这样有问题的请求不会阻塞系统,以及开发人员认为的其他原因)。

因此,除了查看要处理的数据/请求的数量、规划服务器负载的合理起伏、代码与预期负载相比的优化水平之外,这真的没有一个很好的答案或标准,等等…这几乎就像是错误处理,但对于那些你还不知道可能发生的事情(比如意外的错误),但基于你已经知道的关于系统及其预期用途的信息。

一般来说,在很多情况下,超时真的没有那么重要,但你总是希望有一个(至少是默认的)来为意外做好准备。

我发现以下文章讨论了这个话题,如果你还没有看过的话,我也提到了一些内容:

https://medium.com/@masnun/always-use-a-timeout-fo-http-requests-de4da538b9e3

tl;dr-主要根据SLA[服务水平协议]。如果没有,请尝试尽可能优化代码,以减少发出响应所需的时间(以毫秒为单位)

我将用外行的话来回答,因为它实际上取决于各种因素。

让我们假设您有一个API,它执行一些操作并返回结果。这很简单,如果他们不执行任何复杂的操作,你会在几毫秒内得到响应。

当我们进入一个越来越复杂的系统,其中一个API与另一个对话时,它会增加时间,在最坏的情况下,启动请求的第一个API可能会在5秒、30秒甚至60秒后得到最终响应,这取决于API调用的数量和系统设计的好坏。

我们只考虑快乐的流动。如果内部调用的某个API出现问题怎么办?

为了避免这种糟糕的体验,客户将制定SLA,要求公司/开发人员设计代码,使其在一定的可接受范围内给出响应。

我曾在谷歌群组对话中遇到过这样的对话,它可能会提供一些见解。

因此,要回答关于可接受范围的问题,如果您没有SLA,请尽可能优化代码,以减少以毫秒为单位发出响应所需的时间

一般认为1秒是可以接受的。造成这种情况的原因以及建议的数字变化如此之大的原因是,如果您向fast发送请求,大多数API都会被锁定。但是,有些API可以让您更快地发送请求。根据我的经验,我看到的所有API在请求之间都会延迟1秒(1000ms),以防止过载/意外DDOS,并且超时时间为30-60秒。

编辑:重要的是,如果第一个请求仍在等待,请不要让来自同一IP的另一个请求得到答复,因为这将使DDoS易于

相关内容

  • 没有找到相关文章

最新更新