2011-06-13 78 views

回答

1

關鍵的事情是:

1)儘可能的實際測試使用真實的使用場景的應用程序 - 這可能是相當複雜的實踐 - 我已經基於萬維網使用Perl腳本::機械化和http ::記錄器for this在過去。

2)不認爲AB或JMeter的

3)記錄作爲錨赫越好(你不提您所使用的web服務器 - 如果它的阿帕奇,在日誌中添加%d)

4 )確保你使系統飽和 - 你要確保你獲得了一些主要的垃圾收集(或者證明它的homoeostatic - 對於Java程序來說這是非常罕見的事情)

5)分析webserver和gc日誌。

0

讓Hibernate記錄所有執行的SQL。

檢查this link的配置屬性並將hibernate.show_sql設置爲true。一旦你能看到正在執行的內容,如果你懷疑它們比預期的要慢,請檢查任何不尋常的語句並描述它們。

之後檢查他們的執行計劃並調整它們以進一步優化將有助於您的應用程序和數據庫。

0

不確定是否使用不同的技術(例如Hibernate)會改變您執行應用程序性能測試的方式。

有一些運行性能測試的標準工具,它們應該適用於您的應用程序所使用的技術。

使show_sql爲true將有助於查看查詢並進一步分析它們,但可能無助於您的應用程序的整體性能測試。

查看以下文章Java benchmarking tool的基準測試工具。

希望這會有所幫助。

1

首先要開始的是同意什麼是可接受的性能。沒有這個協議,任何事情都是不成熟的。

不同的應用程序類型將有不同的痛點。讀寫混合,併發更新(特別是在相同的數據上 - 例如銷售演唱會門票或飛機座位),數據量。

1

不知道你的應用程序「使用Oracle 11G作爲數據庫」的程度,甚至是什麼類型的環境(我假設是典型的oltp),但從Oracle方面你可以做幾件事情:

  1. 從整體數據庫的角度來看,看看AWR(Automatic Workload Repository,以前的statspack)。我相信這也是內置於企業管理器中的。
  2. SQL Trace + tkprof
  3. 如果使用任何pl/sql,DBMS_HPROF(分層分析器)。
  4. 如果使用任何pl/sql,將重要操作記錄到日誌表(通過自治事務),記錄每個條目的時間戳,採取的操作等。滾動您自己的或使用現有框架(有幾個)。只要確保它的靈活性(可以改變日誌輸出的級別)。