我希望我的问题不是太随意:在我的生产服务器上,我有一个页面通过cURL向同一台服务器上的另一个应用程序发送API调用。
我想在CURLOPT_CONNECTTIMEOUT
然后CURLOPT_TIMEOUT
设置适当的值,以便在有大量请求的情况下留出足够的时间来确保请求完成,但同时我不想要在API停机或响应时间过长的情况下挂起的页面,这会导致所有用户出现严重延迟,因为会产生巨大的阵容。
API提供了一个非常快速的数据库查询,返回一个小的json结构,没有什么复杂的,需要花费很多时间。
鉴于这些规格,任何人都可以对此发表评论?我目前有:
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
更新:
答案 0 :(得分:1)
在定义这些值时,您需要考虑许多因素。但是,对于HTTP请求(第一个字节),2秒被认为是可接受的。如果您管理HTTP请求所在的服务器,那么您还应该考虑服务器资源,例如内存,CPU,IO,Web服务器配置。但一般来说,您应该考虑将traceroute运行到终点以更好地理解延迟 - 这将帮助您为CURL定义更准确的超时值。当然,如果您从客户端发起许多请求,最后您应该考虑前面提到的服务器的相同资源限制。
希望这有帮助!请访问博客:https://www.inmotionhosting.com/support/website/how-to/read-traceroute
答案 1 :(得分:1)
您需要获得有关该API行为的信息才能做出明智的决定。它还取决于代码中API的使用方式以及失败时的行为。
考虑:
面向用户的网站的目标响应时间是什么?
网络超时通常在30到120秒之间,这可以补偿临时网络问题,但仍然在人类的范围内。用户的注意力通常会在几百毫秒后漂移,因此您需要将响应时间保持在一秒钟之内。但是,必须等待网站加载几秒钟并不罕见。
如果您需要调整这样一个关键参数来找到最佳设置,那么务实的方法是将其设置为某个初始值,使用一些测量工具来监控吞吐量和响应率,并启动压力模拟预期生产水平负荷的测试。然后,您将看到您的错误和响应率上升或下降,并可以调整设置,直到找到满足您所需约束的值。