2020年1月

目标

  1. Latency
    多久完成一次请求处理或者操作;
  2. Rate:
    每秒的操作或请求速率;
  3. Throughput
    每秒传输数据大小;
  4. Utilization
    资源随时间繁忙程度;
  5. Cost
    成本,性价比

Resources

linux系统资源

  1. CPU
  2. Memory
  3. I/O
  4. Network

常用linux命令

  • uptime

[root@LinServ-1 ~]# uptime -V #显示uptime命令版本信息
procps version 3.2.7

[root@LinServ-1 ~]# uptime
15:31:30 up 127 days, 3:00, 1 user, load average: 0.00, 0.00, 0.00
说明:
15:31:30 //系统当前时间 up 127 days, 3:00
//主机已运行时间,时间越大,说明你的机器越稳定。 1 user //用户连接数,是总连接数而不是用户数
load average: 0.00, 0.00, 0.00 // 系统平均负载,统计最近1,5,15分钟的系统平均负载

那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。

如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。
  • dmesg

    dmesg | tail 命令可以查看最后10条系统消息,Error消息会给出有用信息,如OOM及TCP丢弃请求等

  • vmstat

    vmstat 1命令每秒打印出虚拟内存相关metric;

    r:表示正运行在CPU的进程数,值大于CPU核数说明系统繁忙了;
    si, so:Swap-ins, swap-outs, 如果值为非零,说明内存不够用了;
    us,sy,id,wa,st:user,kernel,ide,wait I/O及stolen time;

  • mpstat -P ALL 1每秒打印出各个CPU的运行状态

    %waitio:等待I/O时间
    %sys:系统调用时间

  • pidstat

    pidstat 1命令每秒打印出进程跑在哪个CPU核上以及使用率情况

  • iostat

    iostat -xz 1命令每秒打印出每块设备使用情况
    r/s,w/s,rkB/s,wkB/s:每秒完成读写次数及数据大小;
    await:平均等待I/O时间(单位是毫秒);
    Avgqu-sz:发往设备的请求队列平均长度;
    %util:设备使用率,值越大越繁忙;

  • free

    free -m命令查看系统可用内存情况

  • sar

    sar -n DEV 1命令查看网卡收发是否达到上限
    rxkB/s:每秒接收的数据包总数;
    txkB/s:每秒传输的数据包总数;

  • sar2

    sar -n TCP,ETCP 1命令查看网卡收发是否达到上限
    active/s:每秒本地发起的TCP连接数(即调用connect());
    passive/s:每秒远程发起的TCP连接数(即调用accept());
    retrans:每秒TCP重传次数;

  • top

    top命令double check系统和进程运行状态;