檢查 os 效能(linux)

aishu521發表於2013-05-15

一,OS空間相關
1,檢查硬碟
 [root@dev ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             117G  5.5G  105G   5% /
/dev/sda2             807G  745G   21G  98% /ebs10
/dev/sdb2             510G  117G  367G  25% /ebs20
tmpfs                  16G  3.1M   16G   1% /dev/shm
2,查詢最大檔案
首先定位資料夾,假設在/EBS10

root@dev ~]# cd /ebs10/
[root@dev ebs10]# find . -ls|sort -nrk7|head -10
[root@dev ebs10]# find . -ls|sort -nrk7|head -10
20316164 92682352 -rwxrwxrwx   1 root     root     94814035107 May 10 12:46 ./oracle/prod/db2013.tar.gz
66879687 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:01 ./oracle/prod/db/apps_st/data/undo07.dbf
66879685 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:03 ./oracle/prod/db/apps_st/data/a_txn_data08.dbf
66879681 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:03 ./oracle/prod/db/apps_st/data/a_txn_data10.dbf
66879678 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 06:47 ./oracle/prod/db/apps_st/data/system19.dbf
66879677 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:03 ./oracle/prod/db/apps_st/data/undo06.dbf
66879670 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:03 ./oracle/prod/db/apps_st/data/a_txn_ind10.dbf
66879656 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:04 ./oracle/prod/db/apps_st/data/undo05.dbf
66879640 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:03 ./oracle/prod/db/apps_st/data/a_txn_data07.dbf
66879635 20992032 -rw-r-----   1 oradev   dba      21474844672 May 14 10:04 ./oracle/prod/db/apps_st/data/a_txn_ind11.dbf

如果掛載滿了可以考慮,刪除追蹤日誌,網路日誌,歸檔日誌,舊的安裝檔案等
查詢給出目錄下佔用空間最大的資料夾
[root@dev ebs10]# du -s|sort -nr|head -10
671799376       .
檢查指令碼
[root@dev oradev]# cat disk.sh
#!/bin/bash
mntlist="/ebs10 / /ebs20 /dev/shm"
for ml in $mnlist
do
echo $ml
usedspc=$(df -h $ml|awk '{print $5}'|grep -v capacity|cut -d "%" -f1 -)
BOX=$(uname -a|awk '{print $2}')
#
case $usedspc in
[0-9])
arcstat='relax,lots of disk space:$usedspc"
;;
[1-7][0-9])
arcstat='disk spce okay:$usedspc"
;;
[8][0-9])
arcstat="space getting low:$usedspc"
;;
[9][0-9])
arcstat="waring,runing out of space:$usedspc"
echo $arcstat $ml|mailx -s "space on:$BOX" weias@***.com.cn
;;
[1][0][0])
arcstat="uodate resume, no space left:$usedspc"
echo $arcstat $ml|mailx -s "space on:$BOX" weias@****.com.cn
;;
* )
arcstat="huh?:$usedspc"
;;
esac
#
BOX=$(uanme-a|awk '{print $2}')
echo $arcstat
#
done
#

2,確定伺服器效能是否與CPU,I/O 記憶體或者網路相關
vmstat 1 10 每一秒執行一次 執行10次

3,確定消耗資源最多的程式
[root@dev prod]# top //確定程式
[root@dev prod]# ps  31159
  PID TTY      STAT   TIME COMMAND
31159 ?        Ss     1:54 oracledev (LOCAL=NO)
最個常用的按鈕 < > 排序 d 改變重新整理時間 空格鍵 立刻重新整理  F/0 選擇一個排序 z 改變顏色
6.5 確定cpu 和記憶體的瓶頸
最耗CPU的程式
[root@test4 ~]#  ps -e -o pcpu,pid,user,tty,args|sort -n -k 1 -r|head
95.4 19360 appldev  ?        frmweb webfile=5,8,test4_9095,/ebs10/oracle/prod/inst/apps/TEST4_test4/logs/ora/10.1.2/forms/socket.log
82.2 15911 appldev  ?        frmweb webfile=5,24,test4_9095,/ebs10/oracle/prod/inst/apps/TEST4_test4/logs/ora/10.1.2/forms/socket.log
23.0 28378 oradev   ?        oracleTEST4 (LOCAL=NO)
20.0 28380 oradev   ?        oracleTEST4 (LOCAL=NO)
17.0 28382 oradev   ?        oracleTEST4 (LOCAL=NO)
14.0 28384 oradev   ?        oracleTEST4 (LOCAL=NO)
 2.6 28280 oradev   ?        oracleTEST4 (LOCAL=NO)
 1.6 18861 oradev   ?        oracleTEST4 (LOCAL=NO)
 1.2 15783 appldev  ?        /ebs10/oracle/prod/apps/tech_st/10.1.3/Apache/Apache/bin/httpd -d /ebs10/oracle/prod/apps/tech_st/10.1.3/Apache/Apache -DSSL -f /ebs10/oracle/prod/inst/apps/TEST4_test4/ora/10.1.3/Apache/Apache/conf/httpd.conf
 0.9  4467 oradev   ?        /ebs10/oracle/prod/db/tech_st/11.1.0/bin/tnslsnr TEST4 -inherit

4,最耗記憶體的程式
[root@test4 ~]# ps -e -o pmem,pid,user,tty,args|sort -n -k 1 -r|head 
 9.3 19911 oradev   ?        oracleTEST4 (LOCAL=NO)
 9.1  4401 oradev   ?        ora_smon_TEST4
 8.7  4615 oradev   ?        ora_cjq0_TEST4
 8.5  4435 oradev   ?        ora_q001_TEST4
 8.4 21971 oradev   ?        oracleTEST4 (LOCAL=NO)
 8.3 21959 oradev   ?        oracleTEST4 (LOCAL=NO)
 8.0 21962 oradev   ?        oracleTEST4 (LOCAL=NO)
 8.0 21946 oradev   ?        oracleTEST4 (LOCAL=NO)
 7.8  4395 oradev   ?        ora_dbw0_TEST4
 7.8 20066 oradev   ?        oracleTEST4 (LOCAL=NO)
 取一個表名
[root@test4 ~]# alias topc='ps -e -o pcpu,pid,user,tty,args|sort -n -k 1 -r|head'
6,[oraprod@ebsdb ~]$ iostat -xd (X擴充套件 d裝置) 10
檢查使用過多的IO
select *
  from (select a.PARSING_SCHEMA_NAME,
               a.DIRECT_WRITES,
               a.DISK_READS,
               substr(a.SQL_TEXT, 1, 75)
          from v$sql a
         order by a.DISK_READS desc)
 where rownum < 20
 檢查當前正在等待的I/O
 select * from v$session  where event like 'db file%read
二 分析是否存在網路瓶頸
 [root@backup 1]# netstat -ptc
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
getnameinfo failed
tcp        0    148 backup.bitland.com.cn:ssh   [UNKNOWN]:4414              ESTABLISHED 26961/0
如果Send-Q值高說明網路過載
檢查資料的連線性
 ping db/ip
tnsping ip
三 將一個資源密集性的程式對映到一個資料庫程式
  1 ,找出最耗cpu 的資源 
[oraprod@ebsdb ~]$ ps -e -o pcpu,pid,user,tty,args|sort -n -k 1 -r|head
88.8 28799 oraprod  ?        ora_j000_prod
74.6  7103 oraprod  ?        oracleprod (LOCAL=NO)
35.8  7506 oraprod  ?        oracleprod (LOCAL=NO)
23.0  7307 oraprod  ?        oracleprod (LOCAL=NO)
19.2 29360 oraprod  ?        oracleprod (LOCAL=NO)
18.2 23699 oraprod  ?        oracleprod (LOCAL=NO)
12.9 19182 oraprod  ?        oracleprod (LOCAL=NO)
11.7  3824 oraprod  ?        oracleprod (LOCAL=NO)
10.0 19271 oraprod  ?        oracleprod (LOCAL=NO)
 2,查詢資料字典 28799
 SELECT SQL_TEXT,a.SQL_ID
  FROM V$SQLAREA A, V$SESSION B
 WHERE A.SQL_ID = B.PREV_SQL_ID
   AND B.SID = (select s.sid
from v$session s,v$process p
where p.spid= 29360  and s.PADDR=p.ADDR );
執行計劃
  select * from table(dbms_xplan.display_cursor(('av6u1g3pbjfs0')))

通過 ordebug 確認
 
SQL> oradebug setospid 29360;
Oracle pid: 183, Unix process pid: 29360, image: oracle@ebsdb.***.com.cn
SQL> oradebug current_sql;
select * from APPS.OKL_LA_RELEASE_ASSETS_UV
SQL> oradebug tracefile_name;
/ebs10/oracle/prod/db/tech_st/11.1.0/admin/prod_ebsdb/diag/rdbms/prod/prod/trace/prod_ora_29360.trc
SQL> oradebug help 幫助

  3,終止一個密集的程式
   alter system kill session 'sid,serial#');
   kill -i pid

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15187685/viewspace-761149/,如需轉載,請註明出處,否則將追究法律責任。

相關文章