2016-05-25 40 views
3

我正在嘗試改善Web應用程序的性能。分析應用程序本身,我發現它的響應時間非常可接受(100ms-200ms),但是當我使用ApacheBench測試應用程序時,響應時間有時會超過1秒。當我在日誌中仔細觀察,我發現了一個很大的差異request_timeupstream_response_time之間偶爾:爲什麼在nginx access.log中request_time比upstream_response_time大得多?

"GET /wsq/p/12 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.940 0.286 
"GET /wsq/p/31 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.200 0.086 

upstream_response_time非常接近我的web應用程序分析,但request_time接近1秒的第一個請求。

什麼可能導致這種差異?

據我所知request_time是從接收到的第一個字節到發送的最後一個響應字節記錄的,它可能受到網絡條件和客戶端問題的影響。我想知道我應該怎麼做才能儘可能地減少平均request_time

+0

我在找什麼Nginx參數調整來減少request_time? – NeoWang

回答

10

很高的request_time可能是由於客戶端連接速度較慢,您無法做很多工作。因此,高request_time確實不一定代表您的服務器和/或應用程序的性能。

你剖析的時候真的不應該花太多時間在request_time而是衡量事物,如應用程序的響應時間(即upstream_response_time)。

這就是說,有些事情你可以做,可能影響request_time。他們中的一些如下:

  • 將您的服務器高速網絡
  • 。移動您的服務器的客戶端
  • 附近禁用Nagle's algorithm
  • 調整服務器的TCP堆棧(見this article)。但是,這些並不一定會產生很大的差異,因爲內核在爲你調整它們方面做得很好。
相關問題