1. 程式人生 > >導致nginx日誌中request_time過大的原因

導致nginx日誌中request_time過大的原因

場景:

檢視nginx日誌發現請求響應body為1500k左右和request_time為6s左右,導致請求超時無法獲取正常資料。

原因:

  • 使用者端網路問題:

    tcp傳輸如果分包時,每個tcp包大約1400位元組,之前那個請求響應body有1500K左右,要分成100多個tcp包。tcp有個慢啟動過程,起初每次傳送10個包,之後再根據網路情況調整每次發包數量,假設網路不好,就得分10次傳送。然後由於tcp是可靠傳輸,需要確保每個包對方都收到了(通過給每個包編序號,以及接收對方傳送的ack實現),如果在約定時間內沒收到對方發的ack會重傳該包。此外,tcp有傳送視窗的概念,假設傳送視窗為10,那麼一次性可以傳送10個包,之後每收到一個ack才能把這個包對應的傳送視窗位置空餘出來,傳送下一個包。因此,使用者端網路不好是會影響響應body全部發完的時間,進而影響nginx日誌中request_time的時間。

  • 請求響應body體過大:

    因為請求介面輸出的資料中有些過大的無用資料導致請求響應body過大導致分包傳送影響了request_time