天天看點

性能問題定位

出現性能問題時, 必須收集的資訊:

1. 問題出現的環境資訊(應用IP、資料庫IP)、準确時間

2. 出現問題應用執行個體

3. 性能問題現象:

1).記錄應用程序狀态: 可以使用top指令檢視Java程序的CPU及記憶體使用情況;

2).記錄資料庫程序狀态(RAC環境下,資料有兩個節點,要分别收集):可以使用top指令檢視Oracle程序CPU及記憶體使用情況;

4. 應用資訊收集:

1).收集問題程序的Java堆使用情況(每隔5~10秒執行一次,多執行幾次):

#擷取wfm的jboss執行個體程序号
ps -ef|grep java|grep wfm
#切換到jdk/bin目錄, 并執行jmap指令,檢視JVM記憶體使用情況,關注PS Old Generation使用百分比:
/opt/inoc/jdk1.6.0_29/bin/jmap -heap <pid>      

2).收集問題程序的Java線程Dump資訊(每隔幾分鐘執行一次,多執行幾次):

#擷取wfm的jboss執行個體程序号
ps -ef|grep java|grep wfm
#使用kill -3,線程Dump資訊将列印到nohup.out中:
kill -3 <pid>      

  3).擷取JVM快照:

#擷取wfm的jboss執行個體程序号
ps -ef|grep java|grep wfm
#切換到jdk/bin目錄, 并執行jmap指令,将JVM快照導出到/home/public/目錄下:
cd /opt/inoc/jdk1.6.0_29/bin
./jmap -F -dump:format=b,file=/home/public/dump-tmp.bin [pid]
#壓縮dump檔案
cd /home/public
tar cvf – dump-tmp.bin |gzip –qc > dump-[yyyymmddhhmm].bin.tar.gz
rm –rf dump-tmp.bin
#檔案生成後,使用FTP下載下傳到本地      

  4).擷取jboss應用日志,主要是:

i. <jboss-4.2.3.GA>/server/default/log/server.log*

ii.<jboss-4.2.3.GA>/server/default/log/localhost_access_log*

5.資料庫資訊收集(RAC環境下,資料有兩個節點,要分别收集):

1). (此資訊必須在問題發生時,現場檢視)通過top指令檢視Oracle程序中,執行時間長或CPU占用率高的程序,并通過PL/SQL登入出問題的資料庫執行個體,并執行以下SQL檢視此程序目前正執行的SQL; 注意:登入的資料庫執行個體可通過呈現問題的應用來判斷,如:wfm應用是WFM執行個體

select sql_text, spid, v$session.program, process
  from v$sqlarea, v$session, v$process
 where v$sqlarea.address = v$session.sql_address
   and v$sqlarea.hash_value = v$session.sql_hash_value
   and v$session.paddr = v$process.addr
   and v$process.spid in (oracle程序号)
           

  2. AWR報告收集:

以oracle帳号登入資料庫主機,切換ORACLE_SID作業系統變量為對應的資料庫執行個體名,之後使用sqlplus通路資料庫

sqlplus / as sysdba
--執行awrrpt.sql,生成AWR報告,注意:隻生成問題出現前後半小時内的報告,是以,問題的出現時間一定要準确;
@/opt/oracle/app/oracle/product/11.2.0/.../rdbms/admin/awrrpt.sql