2013-06-26 112 views
0

我們有一個應用程序正在使用嵌入式tomcat版本7.0.32。我正在觀察延遲方面的特殊情況。Tomcat第一次請求的高延遲

我正在做一些應用程序的負載測試,我所觀察到的是對tomcat的第一次請求需要相當多的時間,例如,率大約300+毫秒。隨後的請求大約需要10-15ms。

我正在使用BIO連接器。我知道使用持續連接,因爲我使用HTTP 1.1,默認支持。因此,理想情況下只創建1個TCP連接,並將所有請求推送到同一連接上,直到保持活動超時時間結束。

我得到創建一個TCP連接會涉及一些成本,但差別只是很大。

任何想法可能會導致第一次和後續請求之間的延遲的巨大差異,我們可以做任何事情來減少/消除它。

感謝,

維克拉姆

+0

什麼是第一個請求。正試圖加載一個頁面或做任何認證或授權? – karthick

+3

或者JSP可以編譯成servlet,servlet可以編譯成.class文件?您可以預編譯您的JSP並查看它是否消失。 – duffymo

+0

沒有使用JSP,只是普通的http servlets。沒有數據庫調用。用JSON數據做一個簡單的帖子,servlet讀取數據並用相同的請求數據迴應。 – Vicky

回答

0

如果您正在使用JSP,它們被編譯。

如果您正在連接到數據庫,則連接池可能在之前爲空。 一般來說,如果你有懶惰初始化的單例,第一個請求必須等待。在此之上,JIT發揮其作用:因此,在第一個請求之後,JIT可能應用了一些優化。

如果是負載測試(或性能測試),我會忽略第一個請求/運行,因爲這仍然是「預熱」階段。

更新

您可能會發現關於micro benchmark有趣的信息。

+0

沒有使用JSP,簡單的http servlet。它是一個帶有JSON數據的簡單的http post。出於測試目的,我只是讀取數據並將相同的數據作爲響應的一部分發回。 – Vicky

+0

我在基準答案中添加了一個鏈接。 – Beryllium