[英]PHP cURL: CURLOPT_CONNECTTIMEOUT vs 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);
更新 :
定义这些值时,需要考虑许多因素。 但是,对于HTTP请求(第一个字节),可以认为2秒是可以接受的。 如果管理HTTP请求起源的服务器,则还应考虑服务器资源,例如内存,CPU,IO,Web服务器配置。 但是一般来说,您应该考虑在端点上运行traceroute以更好地了解延迟-这将帮助您为CURL定义更准确的超时值。 当然,最后,如果您要从服务器发起许多请求,则应该考虑前面提到的服务器的相同资源限制。
希望这可以帮助! 请参阅以下博客: https : //www.inmotionhosting.com/support/website/how-to/read-traceroute
您需要了解有关该API行为的信息,以便做出有根据的决策。 它还取决于在您的代码中如何使用该API以及在发生故障时所需的行为。
考虑:
您面向用户的网站的目标响应时间是多少?
网络超时通常在30到120秒之间,这可以补偿临时的网络问题,但仍在人工范围内。 用户的注意力通常会在几百毫秒后漂移,因此您希望将响应时间保持在一秒以内。 但是,等待网站加载几秒钟并不罕见。
如果您需要调整这样的关键参数以找到最佳设置,那么务实的方法是将其设置为某个初始值,安装一些测量工具以监视吞吐量和响应率,并启动模拟的压力测试预期的生产水平负荷。 然后,您将看到错误和响应率上升或下降,并且可以调整设置,直到找到满足所需约束的值为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.