2015-11-05 35 views
0

問題:Java應用程序性能問題在手

我有一個正在兩倍的時間來對DEV和QA服務器比我的本地機器上運行的Java應用程序。當在Dev和QA上工作時,我會在1:45 - 2:30(hh:MM)左右獲得時間,而我的本地時間是0:45 - 1:10左右。 我想確定什麼可能會導致服務器上的Java應用程序的性能降低。

我已經調查至今都未提供答案:

  1. 測試與相同尺寸maxheap
  2. 在CPU觀察壓力。當運行批處理應用程序時,Dev大約有75%的時間閒置,所以我認爲這不是問題。
  3. 在Dev上觀察ram。 Dev有足夠的內存來爲JVM提供指定的maxHeap(128mb)。如果我理解正確,只要機器提供的MaxHeap大小正確,機器的可用內存就無關緊要了。
  4. 確保java版本不會引起問題。
  5. 設置日誌記錄級別相同:「INFO」
  6. 處理器:服務器具有2.67GHz處理器我的地方只有2.19GHz

其他信息。

  • 服務器操作系統:Linux
  • 本地計算機操作系統:Windows
  • 單線程的Java應用程序。
  • 應用程序正在讀取和寫入文本文件,並且還向數據庫(hibernate c3p0)調用 。這些是我最大的/只有昂貴的操作

我已經搜查了幾十個網站,以確定根本原因,但我一直無法確定是什麼原因造成的問題,將不勝感激。

+1

「75%空閒」意味着一個核心以100%運行,另外三個空閒,還是真的意味着測試負載僅佔用可用CPU資源的25%? –

+0

如果測試負載實際上只使用潛在可能使用的最大CPU的一小部分,那麼它可能會因I/O而變慢。 –

+0

@JohnBollinger後者「負載消耗的CPU資源只佔其CPU資源的25%?」這是一個共享服務器,所以我的應用程序和服務器上的其他人共同使用的只有25%。不知道它是否重要,但我的應用程序正在讀取和寫入文本文件,並且還調用了數據庫。這些是我最昂貴的操作 –

回答

2

應用程序正在讀取和寫入文本文件,並且還調用了數據庫(hibernate c3p0)。這些是我的大部分/唯一昂貴的操作

很可能您的服務器對其正在使用的數據庫的訪問速度較慢。例如如果你要在同一臺機器上運行數據庫,它可能比網絡上的要快很多。我會考慮在本地和服務器上執行一些簡單的休眠操作所需的時間。如果性能是一個問題,我建議您考慮刪除休眠或甚至數據庫,並且程序運行速度可以提高10倍--100倍。

+1

或者如果它正在讀寫的文本文件位於網絡文件系統上,那麼這也可能會產生重大影響。特別是當應用程序在OP自己的機器上運行時它們是本地的。 –

0

我試圖確定什麼可以在我在測試服務器上的正好是在DMZ服務器

會導致Java應用程序的性能下降(外網)。數據庫和本地計算機(在辦公室工作時)在網絡中。 這是我未能評估的情況。