2011-06-30 69 views
0

我注意到在同一個tomcat中的兩個servlet和同一個主機上的兩個獨立的tomcats之間的處理時間有一個主要區別。這些servlet使用http進行通信。在同一個tomcat或JVM中,tomcat或java是否有一些優化http通信的機制。我試圖確認這一觀察與我正在運行的主機無關。在tomcat中處理io

+0

你能分享這個發現嗎? –

+1

沒有足夠的信息知道。 –

+0

這是什麼操作系統?在單獨的JVM場景中,您是使用環回地址還是真實接口? (這可能不重要,但值得在測試時進行測試)。我試圖想到在上下文切換方面的差異或僅有一個JVM而不是兩個競爭資源的效率,但這些依賴於很多你的工作量。 – Szocske

回答

1

這可能是阻塞和非阻塞I/O之間的差異。

Tomcat使用多線程模型:具有用於處理請求的線程池和用於傳入請求的隊列。服務器將線程分配給傳入的處理請求,執行任務,發送迴應,並將線程返回給池。隊列處理備份的請求。

Netty使用的非阻塞IO有些不同。

也許這兩個請求在被同一個Tomcat處理時正在排隊。

0

關於這些測試的更多信息。這兩個測試都使用Apache Tomcat版本6.0.20和jdk1.6.0_23在SunOS 5.10上運行。 http傳輸可能涉及相當大的文件 - 5M。線程處理可能會解釋,但是由於時序差異超過10倍,我懷疑沒有數據必須從JVM傳出。某種形式的阻塞vs非阻塞可能適合時間差異。