w查看系統負載mysql
load average:1 分鐘內系統的平均負載值,1分鐘以內有多少個進程和任務在使用cpu計算排隊nginx
查看服務器cpu狀況 cat /proc/cpuinfo processor : 0 處理器邏輯CPU個數0單核sql
負載太高,就要想辦法查看什麼進程引發的負載高,要調整優化。top看哪一個進程排在最上面,最上面的說明耗費cpu比較多,針對那個進程去優化。好比mysql佔用cpu高,那麼就去查看mysql的慢查詢日誌,看看是否是能夠經過優化sql語句來提高mysql的查詢效率,這樣就降下來了。 若是即便調優了仍是高,說明cpu不夠用啦,只能增長機器擴容。緩存
vmstat 1 5服務器
r run 1秒內運行和等待CPU時間片的進程數,這個值若是長期大於系統CPU個數,就說明CPU資源不足,能夠考慮增長CPU網絡
b block 被阻塞的,表示等待資源的進程數,任務數據等待寫入磁盤,被I/O阻塞的任務有多少,網絡、磁盤、I/O都有關,這列值若是長時間大於1,須要關注一下tcp
si 交換分區寫入內存的數據量優化
so 內存寫入到交換分區的數據量ui
以上兩個數值一直是0,或者很小很小的值,沒有說明變化,很穩定,說明內存夠;若是長期大於0,並且不斷的變化,說明內存不夠日誌
sy system 顯示系統花費 cpu 時間百分比。就是系統內核本身的服務耗費的
id 不使用的剩餘的停頓的cpu,空閒的,這裏us+sy+id=100%
wa wait 表示I/O(網絡或者磁盤)等待所佔用cpu 時間百分比(比較有用)
top
top 查看進程使用資源狀況,具體查看是哪個進程致使的內存不夠與磁盤讀寫太高
top -c 能夠看到具體命令全局目錄
top -bn1 列出全部進程
sar(比較全面的狠角色外號瑞士軍刀)
若是沒有安裝包:yum -install sysstat
sar -n DEV 查看網卡流量
sar -n DEV 1 10 每秒顯示一次,共顯示10次
sar -n DEV -f /var/log/sa/sa17 查看17日的網卡流量歷史
ar -q 查看歷史負載
sar -b 查看磁盤讀寫
sar -p 能夠顯示cpu
rxpck/s 每秒接收的包的數量(接收的包過量並且並不是傳送數據可能爲攻擊)
txpck/s 每秒發出的包的數量
rxKB/s 每秒接收的數據量,單位KByte 1KB=1000byte=8000bit
txKB/s 每秒發出的數據量,單位KByte
nload
是監控網卡流量,首先安裝epel-release,而後安裝nload
Incoming進來的 Outgoing出去的 買帶寬是指出去的帶寬
若是有攻擊,進來的流量會不少
free查看內存使用狀況
total內存總大小,used使用了多少,free內存剩餘多少,shared共享的(不關注),buff/cache緩衝緩存,系統會把內存分出來給這它們,available=free+沒用完到的buff+cache
ps監控系統
用法一:
ps aux | grep nginx 查看一個進程有沒有在運行
用法二:
ps -elf 列出全部進程
PID殺死一個進程,就用kill+PID數字,kill -9 xxx
檢查系統狀態
netstat 查看網絡狀態
netstat -lnp 查看監聽端口
netstat -an 查看系統的網絡狀態
netstat -lntp 只查看tcp的端口
tcpdump抓包
用法最多:tcpdump -nn
兩個n指用ip的形式顯示出來 原ip原端口>現ip現端口
length 0 檢查這個數字,DDos攻擊,有一種udp flood攻擊,300G的攻擊
tcpdump -nn -i ens33 指定網卡的名字
tcpdump -nn port 80 指定端口來抓包
tcpdump -nn not port 22 and host 192.168.0.100
也能夠排除某有個端口,和只要某一個ip的包,這個ip能夠是源端口的或者是現端口的
tcpdump -nn -c 100 -w 1.cap 指定只抓100個-c,存到一個文件裏去-w(/tmp/1.cap)