zoukankan      html  css  js  c++  java
  • Linux实用命令及技巧

    1.  查看CPU及内存使用排行

    1)查看当前CPU及内存的整体使用情况

    top  

    2)可以使用以下命令查使用内存最多的10个进程    

    ps -aux | sort -k4nr | head -n 10

    3)可以使用一下命令查使用CPU最多的10个进程     

    ps -aux | sort -k3nr | head -n 10

    2. 服务器性能变慢的排查

    1)查看整机性能

    A. top

    查看cpu与mem的使用率,主要基于load average

    B. uptime

    查看load average

    2)查看CPU使用情况

    A. vmstat

    vmstat -n 2 3 : 每2s采样一次,总计采样3次
    
    一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数(单位s),第二个参数是采样的次数
    
    - procs
    
    r:运行和等竺cpu的时间片的进程数,原则上1核CPU的运行队列不要超过2, 整个系统的运行队列不能超过总核数的2倍,否则代表系统压力过大;
    b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等。
    - cpu
    
    us:用户进程小号CPU时间百分比,us值高,用户进程消耗的CPU时间多,如果长期大于50%,优化程序;
    sy:内核进程消耗的CPU时间百分比;
    id:处于空闲的CPU百分比;
    wa:系统等待IO的CPU时间百分比;
    st:来自于一个虚拟机偷取的CPU时间的百分比;
    

    B. mpstat

    查看所有cpu核信息

    mpstat -P ALL 2 :2s钟采样一次所有CPU的信息

     

    C. pidstat

    查看每个进程使用cpu的用量分解信息

    pidstat -u 1 - p 进程号 : 查看进程cpu使用情况
    

    3)查内存使用情况

    A. free

    free -g // GB为单位
    free -m //MB为单位
    

    经验值:

    • 应用程序可用内存/系统物理内存>70%内存充足
    • 应用程序可用内存/系统物理内存<20%内存不足,需要增加内存
    • 20%<应用程序可用内存/系统物理内存<70%内存基本够用

    B. pidstat

    pidstat -p 进程号 -r 采样间隔秒数
    

    4)硬盘使用情况

    A. df

    df -h  查看可视化效果好的碰盘使用情况
    

     

    5)查看碰盘IO使用情况

    A. iostat 

    查看碰盘I/O使用情况

    iostat -xdk 2 3
    

    碰盘块设备分布

    • rkB/s:每秒读取数据量KB;
    • wkB/s:每秒写入数据量KB;
    • svctm:I/O请求的平均服务时间,单位毫秒;
    • await:I/O请求的平均等待时间,单位毫秒;值越小,性能越好;
    • util:1s中用于I/O操作的比例(百分比)。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;

    rkB/s、wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘;

    B. pidstat

    pidstat -d 采样间隔秒数 -p 进程号
    

    5)查看网络IO使用情况

    A. ifstat

    默认本地没有,需要下载ifstat

    ifstat 1  //查看各个网卡的in、out观察网络负载情况,程序网络读写是否正常,用于程序网络I/O优化,增加网络I/O带宽做参考

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/Terry-Wu/p/11990598.html
Copyright © 2011-2022 走看看