zoukankan      html  css  js  c++  java
  • Linux服务器资源占用率总结

     统计内存最高的进程:

    ps aux | grep -v PID | sort -rn -k 4 | head

    统计CPU使用率最高的进程:

     ps aux | grep -v PID | sort -rn -k 3 | head

    僵尸进程:

    ps aux | grep defunct | grep -v grep

    查找进程启动的线程:

    ps -eLf PID

    查看网络服务状态:

    netstat -ntlp --显示正在listening的tcp的数字格式的连接

    netstat -nulp --显示正在listening的udp的数字格式的连接

    硬件故障分析:

    1.检查磁盘使用量:服务器硬盘是否已满。

    2.是否开启了swap交换模式(si/so)。

    3.CPU使用情况:占用高CPU时间片的是系统进程还是用户进程。

    查看CPU和内存信息:

    free -m

    Mem为物理内存的容量。

    Swap为虚拟内存的容量。

    total为总容量。

    used为已用容量。

    free为空闲容量。

    shared为共享容量。

    buff/cache为缓冲及缓存的容量。

    avaiable为真正可用容量。

    一般swap used的值最好不要超过20%。

    top --CPU和内存使用实际统计

     mpstat 2 10 --查看每个CPU的使用统计。

    总线设备信息统计:

    lspci --显示系统中所有PCI总线设备或连接到该总线的所有设备

    使用dmidcode命令查看bios、system、memory、processor等硬件设备的信息

    例:dmidecode -t Memory | grep "Maximum Capacity"

    查看网卡信息:

    ethtool 网卡名

    ethtool -i ens33

    I/O性能统计

    iostat -kx 2

    vmstat 2 10

    swpd:切换到交换内存上的内存容量(默认以KB为单位),正常情况下swpd的值为0。如果swpd的值比较大,如果查过100M,但是si和so的值长期为0,则这种情况不会影响性能。

    free:空闲的物理内存容量。如果free的值很小,但是si和so的值也很小,则系统性能不会受到影响。

    buff:做为buffer cache(缓冲区缓存)的内存,对块设备的读写进行缓冲。

    cache:做为page cache(页面缓存)的内存,文件系统的缓存,如果缓存值大,则说明缓存的文件数多,如果频繁访问到的文件都能被缓存,name磁盘的读io bi(发送到块设备的块数)会非常小。

    si:交换内存使用,由磁盘调入内存。

    so:交换内存使用,有内存调入磁盘。

    提示:内存够用时,si和so的值都是0,;如果这两个值长期大于0,那么系统性能就会收到影响,磁盘、I/O和CPU资源都会被消耗完。

    bi:从块设备读入的数据量(读磁盘),单位为KB/s。

    bo:写入到块设备的数据总量(写磁盘),单位为KB/s。

    提示:随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在I/O等待的值也会越大。

    in:每秒产生的终端次数。

    cs:每秒产生的上下文切换次数。

    提示:in和cs的值越大,有内核消耗的CPU时间会越多。

    us:用户进程消耗的CPU时间百分比。如果us的值比较高,则说明用户进程消耗的CPU时间多。但是如果长期超过50%,那么就考虑优化程序算法或者进行加速。

    sy:内核进程所消耗的CPU时间百分比。如果sy的值比较高,说明系统内核消耗的CPU资源多,这并不是良性的表现,应该检查原因。

    id:CPU处于空闲状态时间的百分比。

    wa:I/O等待消耗的CPU时间百分比。如果wa的值比较高,则说明I/O等待比较严重,这可能是磁盘大量做随机访问造成的,也有可能是磁盘的带宽出现瓶颈,如快操作等。

    查看当前占用I/O资源最高的进程信息,如下图所示:

    dstat --top-bio --top-io

    磁盘使用率统计:

    df -h --查看磁盘容量使用情况(检查删除文件后磁盘空间有未释放)

    fdisk -l --查看磁盘分区信息

    磁盘I/O相关参考:https://www.cnblogs.com/hanson1/p/7102206.html

    lsof命令可以列出当前系统打开的文件及目录,其中提供了大量关于这个应用程序本身和操作系统交互的信息。+D参数可以列出对应目录下的所有子目录和文件。

    操作系统日志:

    查看整体系统日志:/var/log/messages

    查看授权和认证信息:/var/log/secure

    以上两个日志中需关注:

    1)错误和告警信息,是否因为连接数过多所导致的;

    2)是否有硬件错误或文件系统错误。

    中断异常信息:

    /proc/interrupts中中断请求是否均衡分配给了CPU处理,CPU是否会由于大量网络中断请求或RAID请求而过载。

    内核信息查询:

    dmesg | more

  • 相关阅读:
    什么是基于注解的容器配置?
    一个线程运行时发生异常会怎样?
    Java 中你怎样唤醒一个阻塞的线程?
    为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
    Java 中 notify 和 notifyAll 有什么区别?
    在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
    java 中有几种方法可以实现一个线程?
    什么是AOP?
    什么是竞争条件?你怎样发现和解决竞争?
    Mybatis 是如何进行分页的?分页插件的原理是什么?
  • 原文地址:https://www.cnblogs.com/confident1012/p/9556031.html
Copyright © 2011-2022 走看看