1.首先利用系統工具,定位問題[ top | nmon | dstat -dcnml | orzdba ]:
top命令查看各個進程的資源占用情況,各個指標依次解讀如下【top f|1 --help】 :
第一行:當前系統時間,系統運行時長,當前登錄用戶數,系統負載(任務隊列的平均長度,三個數值分別為1,5,15分鐘)【系統負載不要超過cpu的核數】
第二行:進程總數,正在運行的進程數據,睡眠的進程數,停止的進程數,僵屍進程數
第三行:用戶空間占用cpu百分比,內核空間占用cpu百分比,用戶進程空間改變過優先級的進程占cpu的百分比,空閒cpu百分比,等待輸入輸出cpu百分比,,,
第四行:物理內存總數,使用的物理內存總數,空閒內存總量,用作內核緩存的內存量 【70%】
第五行:交換區總量,使用的交換區總量,空閒交換區總量,緩沖的交換區總量 【不要使用交換分區】
pid 進程id
ppid 父進程id
Ruser real user name
uid 進程所有者用戶id
user進程所有者用戶名
group 進程所有者組名
tty 啟動進程的終端
pr 優先級
NI 優先級(負值表示優先級高,正值表示優先級低)
p 最後使用的cpu,僅在cpu多的情況下
%CPU 上次更新到現在,cpu占用百分比
TIME 系統使用的cpu時間總計(秒)
TIME+ ~(1/100秒)
%MEM 進程使用的物理內存百分比
VIRT 進程使用的虛擬內存總量 VIRT=SWAP+RES
SWAP 進程使用的虛擬內存總量 VIRT=SWAP+RES
RES 進程使用的虛擬內存中,被換出的大小 進程使用的、未被換出的物理內存大小RES=CODE+DATA
CODE可執行代碼占用物理內存大小
DATA 可執行代碼以外的部分(數據段+棧)占用的物理內存大小
SHR 共享內存大小
nFLT 頁面錯誤次數
nDRT 最後一次寫入到現在,被修改過的頁面數
S 進程狀態 D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
COMMAND 命令行,命令
WCHAN 若該進程在睡眠,則顯示睡眠中的,系統函數名
FLAGS 任務標志
2.查看網絡問題
netstat -i 1 是否存在丟包,網絡錯誤問題
iftop 【D S】查看進程流量流向 按S切換是否顯示本機的端口信息;按D切換是否顯示遠端目標主機的端口信息;
3.查看io流向
iostat -x 2
iotop 查看進程io走向
dd if=/dev/zero of=/data1/test bs=64k count=16k conv=fsync 目前生產環境EMC正常寫入速度 565 MB/秒
dd if=/data1/test bs=64k |dd of=/dev/null 目前生產環境EMC正常讀取速度 675 MB/秒
4.. query壓力情況
mysqladmin -uroot -P3309 ext -ri 1 |grep -i queries
5.查看是否有鎖等待
select r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,
b.trx_query blocking_query
from information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b
ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r
ON r.trx_id = w.requesting_trx_id\G;
6.查看innodb狀態
show engine innodb status\G;
7.從監控工具中查看,歷史記錄
zabbix