CPU

进程管理工具

  • top htop

    top
    # P:根据CPU使用百分比大小进行排序。
    # M:根据驻留内存大小进行排序。
    # i:使top不显示任何闲置或者僵死进程。
  • strace 跟踪进程中的系统调用

    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 一切皆文件

    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 找出系统瓶颈的利器

    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

    iotop常用快捷键:

    1. 左右箭头:改变排序方式,默认是按IO排序。

    2. 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

  • ping.pe

    yum install iftop -y
    iftop
    yum install mtr -y
    mtr qq.com --report
    # 前三跳是本机,后三跳是目标服务器

磁盘

df -h  # 查看磁盘空间