sar是`System Activity Reporter`(系統活動情況報告)的縮寫。
sar工具將對系統當前的狀態進行取樣,然后通過計算數據和比例來表達系統的當前運行狀態。它的特點是可以連續對系統取樣,獲得大量的取樣數據;取樣數據和分析的結果都可以存入文件,所需的負載很小。sar是目前Linux上最為全面的系統性能分析工具之一,可以從14個大方面對系統的活動進行報告,包括文件的讀寫情況、系統調用的使用情況、串口、CPU效率、內存使用狀況、進程活動及IPC有關的活動等,使用也是較為復雜。
sar是查看操作系統報告指標的各種工具中,最為普遍和方便的。
## 追溯近期數據(默認)
默認情況下,sar從最近的0點0分開始顯示數據
## 追溯過去的統計數據
如果想繼續查看一天前的報告;可以查看保存在/var/log/sa/日志; 使用sar工具查看:
~~~
$sar -f /var/log/sa/sa28
~~~
> ubuntu系統中sysstat默認是關閉的,需要打開 /etc/default/sysstat中的選項
ENABLED="true"
并設置日只保留期限,默認是7天
HISTORY=7
## 查看CPU使用率
`sar -u `: 默認情況下顯示的cpu使用率等信息
可以看到這臺機器使用了虛擬化技術,有相應的時間消耗; 各列的指標分別是:
~~~
%user 用戶模式下消耗的CPU時間的比例;
%nice 通過nice改變了進程調度優先級的進程,在用戶模式下消耗的CPU時間的比例;
%system 系統模式下消耗的CPU時間的比例;
%iowait CPU等待磁盤I/O導致空閑狀態消耗的時間比例;
%steal 利用Xen等操作系統虛擬化技術,等待其它虛擬CPU計算占用的時間比例;
%idle CPU空閑時間比例;
~~~
## 查看平均負載
`sar -q`
指定-q后,就能查看運行隊列中的進程數、系統上的進程大小、平均負載等;與其它命令相比,它能查看各項指標隨時間變化的情況;
~~~
runq-sz 運行隊列的長度(等待運行的進程數)
plist-sz 進程列表中進程(processes)和線程(threads)的數量
ldavg-1 最后1分鐘的系統平均負載
ldavg-5 過去5分鐘的系統平均負載
ldavg-15 過去15分鐘的系統平均負載
~~~
## 查看物理內存使用狀況
`sar -r`
~~~
kbmemfree:這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
kbmemused:這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
%memused:物理內存使用率,這個值是kbmemused和內存總量(不包括swap)的一個百分比.
kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
kbcommit:保證當前系統所需要的內存,即為了確保不溢出而需要的內存(RAM+swap).
%commit:這個值是kbcommit與內存總量(包括swap)的一個百分比.
~~~
## 查看頁面交換發生狀況
`sar -W`
頁面發生交換時,服務器的吞吐量會大幅下降;服務器狀況不良時,如果懷疑因為內存不足而導致了頁面交換的發生,可以使用這個命令來確認是否發生了大量的交換;
~~~
pswpin/s:每秒系統換入的交換頁面(swap page)數量
pswpout/s:每秒系統換出的交換頁面(swap page)數量
~~~
## 查看I/O和傳遞速率的統計信息
`sar -b`
~~~
#tps 磁盤每秒鐘的IO總數,等于iostat中的tps
#rtps 每秒鐘從磁盤讀取的IO總數
#wtps 每秒鐘從寫入到磁盤的IO總數
#bread/s 每秒鐘從磁盤讀取的塊總數
#bwrtn/s 每秒鐘此寫入到磁盤的塊總數
~~~
## 磁盤使用詳情統計
`sar -d `
#DEV 磁盤設備的名稱,如果不加-p,會顯示dev253-0類似的設備名稱,因此加上-p顯示的名稱更直接
~~~
#tps: 每秒I/O的傳輸總數
#rd_sec/s 每秒讀取的扇區的總數
#wr_sec/s 每秒寫入的扇區的 總數
#avgrq-sz 平均每次次磁盤I/O操作的數據大小(扇區)
#avgqu-sz 磁盤請求隊列的平均長度
#await 從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒等于1000毫秒),等于尋道時間+隊列時間+服務時間
#svctm I/O的服務處理時間,即不包括請求隊列中的時間
#%util I/O請求占用的CPU百分比,值越高,說明I/O越慢
~~~
## 進程、inode、文件和鎖表狀態
`sar -v `
~~~
#dentunusd 在緩沖目錄條目中沒有使用的條目數量
#file-nr 被系統使用的文件句柄數量
#inode-nr 已經使用的索引數量
#pty-nr 使用的pty數量
~~~
## 進程、inode、文件和鎖表狀態
`sar -v `
~~~
#dentunusd 在緩沖目錄條目中沒有使用的條目數量
#file-nr 被系統使用的文件句柄數量
#inode-nr 已經使用的索引數量
#pty-nr 使用的pty數量
~~~
> file-max 中指定了**系統范圍**內所有進程可打開的文件句柄的數量限制(系統級別, kernel-level)。 當收到"Too many open files in system"這樣的錯誤消息時, 就應該曾加這個值了。
~~~
# echo 100000 > /proc/sys/fs/file-max
~~~
> ulimit -n 控制進程級別能夠打開的文件句柄的數量
file-nr 可以查看系統中當前打開的文件句柄的數量。 他里面包括3個數字: 第一個表示已經分配了的文件描述符數量
## sar -n
### sar -n #統計網絡信息
#sar -n選項使用6個不同的開關:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 ,
~~~
DEV顯示網絡接口信息
EDEV顯示關于網絡錯誤的統計數據
NFS統計活動的NFS客戶端的信息
NFSD統計NFS服務器的信息
SOCK顯示套接字信息
~~~
ALL顯示所有5個開關。它們可以單獨或者一起使用。
### sar -n DEV 1 1
每間隔1秒統計一次,總計統計1次,下面的average是在多次統計后的平均值
~~~
#IFACE 本地網卡接口的名稱
#rxpck/s 每秒鐘接受的數據包
#txpck/s 每秒鐘發送的數據庫
#rxKB/S 每秒鐘接受的數據包大小,單位為KB
#txKB/S 每秒鐘發送的數據包大小,單位為KB
#rxcmp/s 每秒鐘接受的壓縮數據包
#txcmp/s 每秒鐘發送的壓縮包
#rxmcst/s 每秒鐘接收的多播數據包
~~~
### sar -n EDEV 1 1
統計網絡設備通信失敗信息:
~~~
#IFACE 網卡名稱
#rxerr/s 每秒鐘接收到的損壞的數據包
#txerr/s 每秒鐘發送的數據包錯誤數
#coll/s 當發送數據包時候,每秒鐘發生的沖撞(collisions)數,這個是在半雙工模式下才有
#rxdrop/s 當由于緩沖區滿的時候,網卡設備接收端每秒鐘丟掉的網絡包的數目
#txdrop/s 當由于緩沖區滿的時候,網絡設備發送端每秒鐘丟掉的網絡包的數目
#txcarr/s 當發送數據包的時候,每秒鐘載波錯誤發生的次數
#rxfram 在接收數據包的時候,每秒鐘發生的幀對其錯誤的次數
#rxfifo 在接收數據包的時候,每秒鐘緩沖區溢出的錯誤發生的次數
#txfifo 在發生數據包 的時候,每秒鐘緩沖區溢出的錯誤發生的次數
~~~
### sar -n SOCK 1 1
統計socket連接信息
~~~
#totsck 當前被使用的socket總數
#tcpsck 當前正在被使用的TCP的socket總數
#udpsck 當前正在被使用的UDP的socket總數
#rawsck 當前正在被使用于RAW的socket總數
#if-frag 當前的IP分片的數目
#tcp-tw TCP套接字中處于TIME-WAIT狀態的連接數量
~~~
### sar -n TCP 1 3
TCP連接的統計
~~~
#active/s 新的主動連接
#passive/s 新的被動連接
#iseg/s 接受的段
#oseg/s 輸出的段
~~~
常用命令匯總,因版本和平臺不同,有部分命令可能沒有或顯示結果不一致:
~~~
默認監控: sar 5 5 // CPU和IOWAIT統計狀態
(1) sar -b 5 5 // IO傳送速率
(2) sar -B 5 5 // 頁交換速率
(3) sar -c 5 5 // 進程創建的速率
(4) sar -d 5 5 // 塊設備的活躍信息
(5) sar -n DEV 5 5 // 網路設備的狀態信息
(6) sar -n SOCK 5 5 // SOCK的使用情況
(7) sar -n ALL 5 5 // 所有的網絡狀態信息
(8) sar -P ALL 5 5 // 每顆CPU的使用狀態信息和IOWAIT統計狀態
(9) sar -q 5 5 // 隊列的長度(等待運行的進程數)和負載的狀態
(10) sar -r 5 5 // 內存和swap空間使用情況
(11) sar -R 5 5 // 內存的統計信息(內存頁的分配和釋放、系統每秒作為BUFFER使用內存頁、每秒被cache到的內存頁),
~~~
## 判斷系統瓶頸問題
>[danger] 懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來查看
懷疑內存存在瓶頸,可用sar -B、sar -r 和 sar -W 等來查看
懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看
啟動這個工具來收集系統性能數據: /etc/init.d/sysstat start
## sar參數說明
>[info] -A 匯總所有的報告
-a 報告文件讀寫使用情況
-B 報告附加的緩存的使用情況
-b 報告緩存的使用情況
-c 報告系統調用的使用情況
-d 報告磁盤的使用情況
-g 報告串口的使用情況
-h 報告關于buffer使用的統計數據
-m 報告IPC消息隊列和信號量的使用情況
-n 報告命名cache的使用情況
-p 報告調頁活動的使用情況
-q 報告運行隊列和交換隊列的平均長度
-R 報告進程的活動情況
-r 報告沒有使用的內存頁面和硬盤塊
-u 報告CPU的利用率
-v 報告進程、i節點、文件和鎖表狀態
-w 報告系統交換活動狀況
-y 報告TTY設備活動狀況
- 目錄
- 離散的內容
- IO模型
- 網卡綁定
- ssh
- 硬件測試
- 硬件
- limits
- 網絡流量
- 硬盤IO
- 硬盤
- tmux
- 主機名和域名
- http_proxy
- iptables
- 內核參數
- 塊設備和字符設備
- 內存
- 虛擬內存并非交換分區
- 網絡延時
- 概念
- 多核壓縮
- linux基礎
- SSH協議
- 軟件管理
- yum
- 制作本地源 yum系列
- 制作本地源 apt系列
- apt
- 在 Linux 中移除從源代碼安裝的程序的一種簡單的方法
- 其他
- 源碼編譯和二進制安裝后更改配置
- DNS
- bind
- 守護進程
- 特殊權限
- limit.conf配置
- 網絡
- shell-ok
- 變量ok
- 數組ok
- 系統變量和環境變量
- 運算符和計算-ok
- 條件測試-ok
- 選擇-ok
- shell循環-ok
- 輸出echo和printf-ok
- 技巧-ok
- pre-web
- http協議
- web服務器
- Apache
- apache安裝
- yum安裝
- 二進制安裝
- 編譯安裝
- httpd命令
- 運行 監控apache
- apache配置文件
- 常用配置
- MPM多處理模塊
- 編譯模塊
- apache模塊
- apache核心模塊
- apache標準模塊
- apache第三方模塊
- 虛擬主機
- 1
- CGI-FastCGI-SSI
- 別名和重定向
- apache應用
- 301重定向
- apache防盜鏈
- http轉化為https
- 訪問時間段控制
- 控制訪問目錄
- 限制指定USER_AGENT
- 不同客戶端訪問不同網頁
- apache黑名單
- httpd之禁止解析php
- 不記錄css/js/img的訪問日志
- 瀏覽器端靜態緩存
- apache訪問日志自動切割
- order-require
- 壓縮傳輸
- httpd-ssl
- apache代理
- 正向代理
- 反向代理
- apache調優
- httpd壓力測試工具ab
- CGI測試
- php
- php原理
- httpd和php的結合方式
- php yum安裝之DSO模式
- php 編譯安裝之DSO模式
- php-fpm詳解
- php yum安裝之php-fpm模式
- php 編譯安裝之FastCGI模式
- php擴展之mysql
- php擴展之gd
- php擴展之pcntl
- php擴展之xcache
- php擴展之ZendGuardLoader
- phpMyAdmin
- wordpress
- 數據庫-mysql
- 數據庫原理
- mysql數據庫原理
- mysql源碼編譯安裝
- mysql二進制包安裝
- mysql命令行工具
- 更改密碼
- 數據庫授權grant
- mysql日志
- 命令
- 常用
- 小命令大作為
- awk 報告生成器
- 網絡命令
- 命令查找
- 壓縮歸檔命令
- 文件管理
- 文件管理命令
- 文件查看命令
- 目錄管理命令
- 用戶管理命令
- 用戶權限管理
- curl
- cheat
- chrony
- command
- crontab任務計劃
- cut
- date
- dd
- df
- echo
- find
- grep
- hash
- iftop
- kill pkill killall
- ls
- lsmod和modprobe
- lsof
- man
- mkpasswd
- mount
- mtr
- netstat
- nmap
- nc
- NTP
- passwd
- rm
- rdate
- pv
- sar系統活動情況報告
- sed文本處理命令
- setup
- screen
- shutdown
- sort 命令
- sudo
- tcpdump
- top
- uniq
- wget
- who
- xargs
- 監控
- zabbix郵件報警
- Redis
- redis安裝
- redis數據類型和操作方法
- redis持久化和配置
- redis主從配置
- php連接redis
- redis實現session共享
- 安裝測試
- redis設置密碼
- ELK日志分析系統
- elasticsearch
- logstash
- logstash插件
- filebeat日志收集
- kibana
- jenkins
- jenkins安裝與配置
- 案例1
- 案例2
- 案例3
- 代碼倉庫之svn
- svn服務端配置
- 常用操作
- svn備份
- LB集群
- LVS負載均衡集群
- ipvsadm使用方法
- LVS調度方法
- NAT原理
- NAT實踐
- DR原理
- DR實踐
- TUN原理
- LVS持久連接
- HA集群
- HPC集群
- 共享存儲
- ftp協議
- vsftpd
- NFS
- 網站架構發展
- 文件同步
- rsync基本用法
- rsync安裝和使用_拉取模式
- lsyncd安裝和用法
- zabbix
- zabbix服務端安裝
- zabbix客戶端安裝
- zabbix編譯安裝
- zabbix監控tomcat
- zabbix監控mysql
- gitlab
- supervisor
- nsq
- ruby
- nodejs
- consul
- mesos
- zookeeper
- rwho
- 對象存儲
- 工具
- rclone
- minio
- linux 性能調優
- CPU
- 第一部分 CPU
- 安全