出现性能问题时, 必须收集的信息:
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