パフォーマンスの問題の位置づけ


性能問題が発生した場合、必ず収集しなければならない情報:1.問題が発生した環境情報(アプリケーションIP、データベースIP)、正確な時間2.問題が発生したアプリケーション例3.性能問題現象:1).アプリケーションプロセスの状態を記録する:topコマンドを使ってJavaプロセスのCPUとメモリの使用状況を見ることができる;
2).データベースプロセスのステータスを記録する(RAC環境では、データを収集するノードが2つあります):topコマンドを使用してOracleプロセスCPUおよびメモリの使用状況を表示できます.
4.アプリケーション情報収集:
1).収集問題プロセスのJavaスタック使用状況(5~10秒ごとに1回、複数回実行):
 
#  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. /server/default/log/server.log*
ii./server/default/log/localhost_access_log*
 
5.データベース情報収集(RAC環境では、データは2つのノードがあり、それぞれ収集する):
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