繁体   English   中英

朝着同一服务器的CURLOPT_CONNECTTIMEOUT和CURLOPT_TIMEOUT的良好生产价值

[英]Good production values for CURLOPT_CONNECTTIMEOUT and CURLOPT_TIMEOUT towards same server

我希望我的问题不要太随心所欲:在生产服务器上,我有一个页面,使用cURL将API调用发送到同一服务器上的另一个应用程序。

我想先在CURLOPT_CONNECTTIMEOUT上设置适当的值,然后在CURLOPT_TIMEOUT上留出足够的时间以确保在有大量请求的情况下完成请求,但是同时我不希望页面在API关闭或关闭的情况下挂起。需要太长时间才能做出响应,这将导致所有用户的重大滞后,因为将会产生庞大的阵容。

该API可以进行非常快速的数据库查询,并返回一个小的json结构,没有什么复杂的事情需要花费很多时间。

有了这些规范,有人可以对此发表评论吗? 我目前有:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);

更新

  • API是全新的,仅供我使用
  • API是获取所有数据的关键。 如果API不起作用,则无任何作用,并且显示错误消息
  • 在每个页面上运行API以获取所需的数据

定义这些值时,需要考虑许多因素。 但是,对于HTTP请求(第一个字节),可以认为2秒是可以接受的。 如果管理HTTP请求起源的服务器,则还应考虑服务器资源,例如内存,CPU,IO,Web服务器配置。 但是一般来说,您应该考虑在端点上运行traceroute以更好地了解延迟-这将帮助您为CURL定义更准确的超时值。 当然,最后,如果您要从服务器发起许多请求,则应该考虑前面提到的服务器的相同资源限制。

希望这可以帮助! 请参阅以下博客: https : //www.inmotionhosting.com/support/website/how-to/read-traceroute

您需要了解有关该API行为的信息,以便做出有根据的决策。 它还取决于在您的代码中如何使用该API以及在发生故障时所需的行为。

考虑:

  • 如果将该值设置得太低,则由于任何原因API花费更长的时间响应,您的代码都会失败。
  • 如果API的响应时间超过〜4秒,那是什么意思?
    • API是否完全关闭? 那么实际上您不需要等待更长的时间。
    • 它超载了吗? 那它会在5秒钟内回复吗? 6? 10? 这种过载状态将持续多长时间? 通过重载更多代码来复合它是否不好,或者尽早中止代码并让API恢复会更好吗?
    • 是否有临时网络启动? 如果您将超时时间设置为5秒,是否可以解决? 10? 20? 网络通常有多可靠?
  • 如果API由于上述任何原因而响应缓慢,您希望应用程序运行缓慢还是死机
  • 您可以保证 API的一定响应时间吗?如果不能保证该响应时间,那就意味着它已经关闭了?
  • 您面向用户的网站的目标响应时间是多少?

    网络超时通常在30到120秒之间,这可以补偿临时的网络问题,但仍在人工范围内。 用户的注意力通常会在几百毫秒后漂移,因此您希望将响应时间保持在一秒以内。 但是,等待网站加载几秒钟并不罕见。

如果您需要调整这样的关键参数以找到最佳设置,那么务实的方法是将其设置为某个初始值,安装一些测量工具以监视吞吐量和响应率,并启动模拟的压力测试预期的生产水平负荷。 然后,您将看到错误和响应率上升或下降,并且可以调整设置,直到找到满足所需约束的值为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM