Linux Ops Tools
CPU
top htop
top # P:根据CPU使用百分比大小进行排序。 # M:根据驻留内存大小进行排序。 # i:使top不显示任何闲置或者僵死进程。
strace -p 1234 strace -f -F -o ~/straceout.txt myserver # -f -F选项告诉strace同时跟踪fork和vfork出来的进程,-o选项把所有strace输出写到~/straceout.txt里 面,myserver是要启动和调试的程序。 strace -o output.txt -T -tt -e trace=all -p 1234 # 跟踪 1234 进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。
lsof -p 1234 # 某个进程打开的文件 lsof /bin/bash # 某个文件相关的进程 lsof -u username # 某个用户打开的文件 lsof -c mysql # 某个程序代开的文件 lsof -u test -c mysql # 某个用户以及某个进程所打开的文件 lsof -i # 所有的网络连接 lsof -i tcp # 所有tcp 网络连接
性能优化
top htop
top -c # 显示完整的程序命令 top -p 1234
top第三行显示,其中有两个值很关键:
%id:空闲CPU时间百分比,如果这个值过低,表明系统CPU存在瓶颈;
%wa:等待I/O的CPU时间百分比,如果这个值过高,表明IO存在瓶颈;
free vmstat
free -m vmstat 5 5 # 可实时动态监视操作系统的内存、进程、CPU活动。
io瓶颈
如果IO存在性能瓶颈,top工具中的%wa会偏高;
进一步分析使用 iostat 工具:
yum install sysstat -y iostat 2 3 # 每隔2秒刷新显示,且显示3次 iostat -x -k 1 1 # 查看TPS和吞吐量
cpu属性值说明:
%iowait:CPU等待输入输出完成时间的百分比【IO延迟】。
%idle:CPU空闲时间百分比。
注:
如果%iowait的值过高,表示硬盘存在I/O瓶颈。
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明CPU。
disk属性值说明:
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数
wkB/s: 每秒写K字节数.
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作
注:
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。idle小于70% IO压力就较大了。
sar 可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,由于使用太复杂,暂时不讲,要用的时候自己看。
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
# 安装 yum install sysstat vi /etc/default/sysstat # 设置 ENABLED="true" /etc/init.d/sysstat start # 启动这个工具来收集系统性能数据 sar -u # CPU使用率 sar -q # 查看平均负载
iotop常用快捷键:
左右箭头:改变排序方式,默认是按IO排序。
o:只显示有IO输出的进程。
yum install iotop -y iotop # 收集数据 iotop -b -o -d 1 -n 60 > iotop_log.txt
-b
:以批处理模式运行。-d 1
:每隔 1 秒更新一次,默认1秒。-n 60
:运行 60 次(即 60 秒)。
网络工具
iftop
mtr 查看网络链路质量
ss, lsof, telnet
yum install iftop -y iftop yum install mtr -y mtr qq.com --report # 前三跳是本机,后三跳是目标服务器
磁盘
df -h # 查看磁盘空间