我使用Apache HttpClient以大約20個POST請求/秒的速度在本地主機上查詢HTTP/1.0(不保持活動狀態)服務器。我有這樣啓用TCP_NODELAY:Apache HttpClient在高請求/秒下的隨機延遲
val httpParams = new BasicHttpParams()
HttpConnectionParams.setTcpNoDelay(httpParams, true)
val client = new DefaultHttpClient(connectionManager, httpParams)
儘管如此,每分鐘幾次我看到的10-200毫秒發送這樣的請求隨機延遲(在服務器上顯示測量,即延遲在發送)。我檢查了一下,這不是垃圾收集器暫停。可能是什麼問題?
我試圖用C++客戶端以相同的速率查詢服務器,並沒有這種隨機延遲,所以我認爲這是HttpClient問題。
更新: 我檢查了jetty HttpClient實現,它有同樣的問題。這可能是FreeBSD上的JVM的一些問題嗎?我應該在linux上測試這個,但我手邊沒有linux服務器。
允許連接到目標主機的連接數量?你調整了這個參數嗎? – MJB 2011-04-24 23:36:42
它總是一個連接(由互斥體控制)。 – Michael 2011-04-27 23:32:52
你嘗試禁用'http.connection.stalecheck'嗎?它只應該是10-30毫秒的延遲,但可能更多是由於DNS到期或其他一些複雜因素。 – Barett 2017-02-02 20:36:01