网络IO
- sar -n DEV 1 3 监控网卡IO
ethtool 网卡名
查看网卡的最大速率等参数信息netstat -nat | awk 'FNR>2{print $NF}' | sort | uniq -c
查看系统TIME_WAIT状态连接数- 查看DND信息dig命令
1
2
3dig baidu.com # 输出host的cname记录与A记录,可以看到ip地址和使用的DNS服务器信息,添加` +short`可以简化输出
dig -x 204.152.184.167 +short # 用 -x的选项查找IP地址的主机名
dig @ns1.google.com www.google.com 指定查询的DNS server
tcpdump
1 | tcpdump -D # 显示可以抓取的所有网络接口 |
wireshark分析网络包
- tcpdump保存的文件是二进制的文件,需要下载到本地用wireshark查看
- 过滤器:tcp.stream
- 抓包参数和结果解析
CPU
mpstat -P ALL 1 1
查看cpu占用率波动情况;也可以top
,然后1taskset绑定进程或者线程到指定CPU的核
1
2
3
4
5taskset -cp pid 查看进程所属核
taskset -acp pid 查看进程及所有线程的所属核
taskset -pc 3 pid 表示将进程pid绑定到第3个核上
taskset -a -pc 3 pid 表示将进程pid(包括所有线程)绑定到第3个核上
taskset -cp 1,2,3 pidpidstat 用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况
1
2
3
4
5
6
7
8
9
10# 查看CPU
pidstat -p pid 3 3
# 查看进程内存状态,用ps效果一样,RSS单位为KB
pidstat -r -p 26716 3 3
# 查看进程磁盘IO
pidstat -d -p 26716 3 3
# 查看进程上下文切换
pidstat -wt -p 26716 3 3
# 查看进程中的线程信息
pidstat -t -p 26716 3 3vmstat 2 1 查看系统上下文切换
内存
top
- top命令常用参数
- P,M分别是按cpu和内存排序;mac系统使用o + 列名
sar -u 1 3
监控CPU状态top -p 345
查看指定pid=345的进程,在mac中用-pid代替-p- %cpu参数不可靠,需要1查看每个CPU的使用率才可靠
free
1 |
|
参数说明
-A 汇总所有的报告
-a 报告文件读写使用情况
-B 报告附加的缓存的使用情况
-b 报告缓存的使用情况
-c 报告系统调用的使用情况
-d 报告磁盘的使用情况
-g 报告串口的使用情况
-h 报告关于buffer使用的统计数据
-m 报告IPC消息队列和信号量的使用情况
-n 报告命名cache的使用情况
-p 报告调页活动的使用情况
-q 报告运行队列和交换队列的平均长度
-R 报告进程的活动情况
-r 报告没有使用的内存页面和硬盘块
-u 报告CPU的利用率
-v 报告进程、i节点、文件和锁表状态
-w 报告系统交换活动状况
-y 报告TTY设备活动状况
系统平均load负载
sar -q 2 2
参数:
runq-sz:运行队列的长度(等待CPU时间片来运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载 ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
查看内存信息
sar -r 1 3
参数解释:
kbmemfree:剩余可用内存、单位K
kbmemused:已用内存、以K 为单位、该值不考虑内核自身所使用的内存
%memused:已用内存百分比
kbbuffers:已用buffer(内核所用)、单位K
kbcached:已用cache(内核所用)、单位K
kbswpfree:剩余Swap、单位K
kbswpused:已用Swap、单位K
%swpused:已用Swap百分比
kbswpcad:被缓存的Swap、单位K
内存分页统计
sar -B 5 3
参数解释:
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
系统交换活动状况
sar -w 1 3
参数:
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
CPU信息
sar -u 3 5
参数解释:
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比
%nice:显示在用户级别,通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间的比例
%system:在内核级别(kernel)运行所使用 CPU 总时间的百分比
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比
1)若 %iowait 的值过高(大于0的长时间值),表示硬盘或者网络存在I/O瓶颈
2)若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3)若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU
磁盘信息
sar -b 3 5
tps:每秒磁盘的 I/O 传输总量
rtps:每秒从磁盘读出的数据总量
wtps:每秒向磁盘写入的数据总量
bread/s:每秒从磁盘读出的数据量,单位为 块/s
bwrtn/s:每秒向磁盘写入的数据量,单位为 块/s
网络IO
sar -n DEV 2 3
监控TCP连接状态
sar -n TCP/ETCP 1
active/s: 每秒本地发起的TCP连接数,即服务器通过connect调用创建的TCP连接数
passive/s: 每秒远程发起的TCP连接数,即服务器通过accept调用创建的连接数
retrans/s: 每秒重传数量1
2
3
### Linux /proc目录
在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的
可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID)
ls /proc/PID/task | wc -l
获取进程相关信息
cat /proc/PID/status
获取内存信息
vmstat -s -S M
cat /proc/meminfo
CPU信息
cat /proc/cpuinfo
调整TCP receive窗口大小
浅谈TCP参数优化
/sbin/sysctl net.ipv4.tcp_rmem
cat /proc/sys/net/ipv4/tcp_rmem
```
Linux单机性能评估和优化
单机性能主要包括CPU、内存、网络IO、磁盘IO几个方面,互相依赖,互相影响。例如,网卡巨量吞吐或者磁盘频繁读写都可能导致CPU系统调用过高而占用率很高。CPU一般认为user%+sys%<70%为良好状态,内存一般认为si和swap out都为0为良好状态,磁盘认为iowait%<20%为良好状态