安裝sysstat 會 安裝上 iostatphp
iostat 1 10html
iostat -x 磁盤使用linux
%util: 在統計時間內全部處理IO時間,除以總共統計時間。例如,若是統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閒置,那麼該設備的%util = 0.8/1 = 80%,因此該參數暗示了設備的繁忙程度 。通常地,若是該參數是100%表示設備已經接近滿負荷運行了(固然若是是多磁盤,即便%util是100%,由於磁盤的併發能力,因此磁盤使用未必就到了瓶頸)。ios
iotop 磁盤使用 查看具體進程使用io大小nginx
free 查看內存使用狀況web
free -m / -g / -h緩存
buff/cache: 緩衝/緩存服務器
磁盤(數據) --> 內存(cache) --> cpu網絡
cpu --> 內存(buff) --> 磁盤(數據)多線程
公式: totle=used+free+buff/cache
avaliabel 包含free和 buff/cache剩餘部分
ps 查看系統進程
用法:ps aux、ps -elf
經常使用: ps aux | grep nginx
%CPU cpu百分比
%MEM 內存百分比
VSZ 虛擬內存
RSS 物理內存
TTY 哪一個tty上
STAT部分說明
D 不能中斷的進程 (這種進程會直接影響系統負載, 負載會變高, 但佔cpu使用率不必定高)
R run狀態的進程 (某一時間段內(1分鐘?)進程在使用cpu)
S sleep狀態的進程
T 暫停的進程 vmstat 1 -> ctrl-z 會暫停- fg 調回
Z 殭屍進程
< 高優先級進程
N 低優先級進程
L 內存中被鎖了內存分頁
s 主進程 如nginx的主進程master
l 多線程進程 一個進程裏有多個線程, 進程和進程之間內存不共享, 不管多少個線程共享進程的內存
查看進程在哪裏啓動的, 先找到進程號
ls -l /proc/進程號的目錄
自定義ps
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'
netstat 查看網絡狀態
netstat -lnp 查看監聽端口
netstat -an 查看系統的網絡鏈接狀況
netstat - lntp 只看出tcp的, 不包含socket
netstat -ltunp 只看出tcp的和utp的
ss -an 和 netstat 殊途同歸
技巧
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
http://www.cnblogs.com/chengmo/archive/2010/10/08/1846190.html
http://www.cnblogs.com/lixiaohui-ambition/archive/2012/12/11/2813419.html
須要關注 ESTABLISHED 值, ESTABLISHRD = 併發鏈接數
ESTABLISHED 很大 , 說明網站很忙, 1000之內爲好
好比,服務器僅僅是lvs調度器,那established數值就算10000也不是問題,由於即便鏈接數再多也不會對調度器形成多大影響。
反而,若是是httpd或者php-fpm,這個數值很大,說明訪問量很大,那也就意味着php的處理比較繁忙,天然會對機器形成影響。
yum install -y tcpdump
抓包工具 tcpdump
用法: tcpdump -nn 需指定網卡名字,以下
tcpdump -nn -i ens33 i 指定網卡名字, 不加nn顯示成主機名
tcpdump -nn -i ens33 port 80 指定端口
tcpdump -nn -i ens33 not port 22 and host 192.168.0.100 不要22端口不要主機ip爲0.100
tcpdump -nn -i ens33 -c 100 -w /tmp/文件名.cap 指定個數(抓100個), 指定存放的文件名
tcpdump -r 文件名.cap 打開cap文件
-s 0 : 抓取數據包時默認抓取長度爲68字節。加上-S 0 後能夠抓到完整的數據包
yum install -y wireshark
查看 指定網卡 80端口 web訪問狀況
tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
訪問時間 ip 域名 post/get 訪問的連接