[英]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.