2012-03-20 69 views
4

我有一個運行在Tomcat上的Java Web/SIP應用程序。該應用程序的大小設置爲在Windows 2003上運行1000個並行會話,在虛擬環境中具有4 GB RAM和4個vCPU。Windows 2003和Windows 2008中的Java Web應用程序性能

現在應用程序遷移到Windows 2008,Tomcat仍然是32位,應用程序是用32位Java編譯的,所以是32位應用程序。有了這個設置我的2008年表演。測試與Windows 2003一起使用時效果不一樣.CPU利用率達到峯值,許多呼叫被丟棄。

我在這裏有以下問題。

  1. 是否在64位環境中運行32位應用程序需要額外的CPU /內存,這是造成問題的地方。

  2. 有2003贏和Win之間的性能差異2008年

  3. 確實的Windows 2008,因爲64位環境需要更多的CPU比作2003年

+0

儘管沒有跡象,我會先嚐試更多的內存,因爲64位系統更耗資源。 Java字節碼對於32位和64位是相同的,因此您可以嘗試使用64位Java的TomCat 7,64位。 – 2012-03-20 07:44:15

+0

添加更多內存不會產生任何影響,但是增加更多的CPU會對性能產生影響。處於混亂狀態。我是否應該專注於我的應用程序,以優化或適應2008年將需要更多資源和增加資源的事實。 專注於Windows 2008優化或2008年的Tomcat優化是否是一種選擇? 如果是,那我可以在哪裏找到鉛? – 2012-04-01 20:04:47

回答

0
  1. 沒有什麼特別。
  2. 是的。有時候這很重要。我發現在過去以扭曲速度工作的程序中出現各種延遲。
  3. 是的,但不是因爲64位,只是因爲裏面有更多。
+0

感謝您的輸入,您能否提供一些數據點來證明點2,一些比較矩陣或其他東西。 另外誰是誰在吃這個CPU更大的罪魁禍首。 1. 64位體系結構。 2.現在運行的Windows 2008可能是支持操作系統的更多工具。 3.一個tomcat 5.5.33這是一個32位的應用程序。並在64位操作系統上運行。 4. JRE,它是32位,在64位環境下運行。 5.我的應用程序。 遷移到Windows 2008後,我看到性能下降20-25%,我需要強大的數據點來證明VM環境中額外資源的需求。 – 2012-03-21 10:57:14

1

我們曾經有過類似的情況,我們嘗試將一個32位應用程序(基於Tomcat的J2EE應用程序)移動到64位機器上。我們觀察你面臨的後果。

順便說一句,你沒有提到你爲什麼轉移到64位操作系統:)。

讓我們通過一個

是否運行在64環境32位應用程序需要額外的CPU /內存能夠在這裏創造的問題您的問題之一。

總的來說是。但它也取決於您的處理器架構。要理解這一點,請看Windows在64位機器上運行32位應用程序的方式。有64位操作系統內的子系統稱爲了WoW64Windows 32-bit on Windows 64-bit

主要有兩種方法了WoW64做它

  1. 仿效一個32位指令。這計算上非常昂貴並可能是CPU使用率高峯的原因。當與基於英特爾安騰(IA-64)的處理器一起使用時,情況通常如此。

  2. 將處理器從64位模式切換到32位模式。在這裏,無論何時需要執行32位應用程序線程,處理器將切換爲爲32模式(兼容模式),然後切換回64位模式。這比早期的仿真機制相對更快。

有贏2003和Windows 2008之間的性能差異

這是很主觀的。這取決於你使用的硬件種類。即使你有64位操作系統和硬件,很大程度上取決於硬件的類型,主板CPU等。64位操作系統旨在利用卓越的硬件,這是一個32位的操作系統和機器不能由於尋址空間等限制。

確實的Windows 2008,因爲64位環境需要更多的CPU比較2003

是。作爲上面提到的@EJP,它有more things to offer。功能更強大的操作系統將需要卓越的硬件這可能是您的特定應用程序可能需要或可能不需要任何Win 2008特定功能的情況。這就是您需要打電話的原因,您需要從32位升級到64位。這裏是similar post在同一個論壇上。

順便說一句我不確定你是否有一個選擇,但你可以run the same code without rebuilding(如果你沒有使用任何特定於平臺的庫)在64位Tomcat上。

0

我認爲先前安裝的SIP應用程序和Java已經過優化,而新的尚未安裝。 在最新的SP for Windows 2003和最新的SP 2008(基於Vista)之間,網絡和Java沒有性能差異,但由於更加智能的CPU親和性,Win 2008 R2的速度更快,甚至可以在VM中運行。 基本上,我會研究你的Java,確保你正在運行64位Java,如果可以的話,它使用「-server」開關運行,並且你的垃圾收集器有選項,例如-XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC -XX:NewSize = 128m,同時檢查java opts set JAVA_OPTS = -Xmx3000M -server。

此外,請確保您運行的是最新的java版本,您的系統包括驅動程序以及更新了可視化軟件,BIOS,BMC以及存儲固件的Windows更新。

最後,只需檢查任務管理器,如果它真的是Java尖峯,你的局域網連接(ping)沒有丟包,並且你在機器的BIOS中關閉了電源管理。

我會建議你升級到贏得2008 R2 - 贏得7基礎。

如果您使用公共雲,這可能不是設置的問題,但只是雲服務器與另一臺虛擬服務器共享CPU,所以您的應用程序被卡住了。

+0

ps。如果是網絡應用程序,請增加網絡端口,vm主機和guest虛擬機上的緩衝區 - 這確實有幫助,如果可以的話,請使用10Gbps鏈接,如果它仍然無法正常工作,只需提供有關設置的更多詳細信息。 – Andrew 2012-04-08 20:12:41

相關問題