我一直在微型優化我們在Tomcat上的頁面響應時間,並且在幾乎所有情況下,我都會看到響應時間爲50ms如果我一遍又一遍刷新,但是如果頁面沒有一秒鐘或兩個響應時間跳回500ms。Tomcat零星等待時間
我已經看到了與本地,非本地,APR,NIO,JIO,靜態或動態響應(即服務靜態文件或動態響應響應)相同的行爲。到目前爲止,我還沒有看到這種行爲而不是發生在Tomcat上(即無論頻率如何都是一致的子400ms)。
我已經使用Visual VM來查看是否有任何線索。
我認爲這是某種活生生的,但是當我運行Apache Bench時,我的響應時間甚至更快(顯然是因爲它頻繁響應)。
那麼如何在Tomcat中保持低延遲而不是頻繁命中URL呢?也許這個問題對於ServerFault更好?
更新:我幾乎肯定它的Tomcat 6問題。我以爲我在Tomcat 7上進行過測試,但我只是再次測試過,沒有問題(請參閱下面的結果)。即使是最新的Tomcat 6仍然存在這個問題。
這裏是ab
輸出爲Tomcat 6(注意最大):
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 14 39 45.2 30 314
Waiting: 14 38 45.2 30 314
Total: 14 39 45.2 30 314
這裏是ab
輸出爲Tomcat 7通知最大:
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 25 38 8.8 37 67
Waiting: 25 37 8.7 36 66
Total: 25 38 8.8 37 67
Tomcat的版本是唯一的區別(相同的機器,相同的JDK等)。 我認爲最新的Tomcat 6會很好,但它在首次請求時會有類似的延遲。
這真的取決於你的請求在做什麼我會這麼想。你只是抓取一個.html文件,或者你正在初始化某種數據服務等。 – aglassman 2013-02-21 16:53:49
你使用openjdk嗎?當我交換到Oracle JDK時,我遇到了一些奇怪的問題。 – Jaydee 2013-02-21 16:57:47
也許有某種全GC'停止世界'...你檢查垃圾收集器輸出(詳細GC)? – home 2013-02-21 17:03:57