zoukankan      html  css  js  c++  java
  • 系统负载

    cpu 资源的过度使用,会造成系统中出现大量的等待进程,导致应用程序相应时间缓慢,而进程的大量增加又会导致系统内存资源的增加,
    当物理内存耗尽时,系统会使用虚拟内存,而虚拟内存的使用又会造成磁盘io的增加并加大cpu的开销。

    使用vmstat 查看系统维度的cpu负载

    vmstat

    [root@b8 ~]# vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
    r b swpd free buff cache si so bi bo in cs us sy id wa st
    2 4 12320784 185196 1460 605296 4 2 17 159 0 0 10 2 86 2 0

    procs

    r:表示系统中cpu 等待处理的线程。由于cpu 每次只能处理一个线程,所以,该数值越大,通常表示系统运行越慢。
    b:表示阻塞的进程,比如正在等待io或者内存交换等

    memory(KB单位)

    swpd:虚拟内存已使用的大小,如果大于0,表示机器的物理内存不足了,如果不是程序内存泄漏的原因,那么该升级内存或者把耗内存的任务进程迁移到其他机器。
    free:表示当前空闲的物理内存数量
    buff:表示buffers cache 的内存数量,一般对块设备的读写才需要缓冲
    cache:表示page cached的内存数量,一般作为文件系统进行缓存,频繁访问的文件都会被缓存。如果cache值较大,说明缓存文件较多,如果此时io中的bi比较小,说明文件系统效率比较好。

    swap

    si:每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露,要查找耗内存进程的解决掉
    so:每秒虚拟内存写入磁盘的大小,如果这个值大于0,表示物理内存不够用或者泄露,要查找耗内存进程解决掉。

    io

    bi:块设备每秒接受的块数量(读磁盘)
    bo:块设备每秒发送的块数量(写磁盘)

    bi+bo 的参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘io有问题,应该考虑提高磁盘的读写性能。

    system

    in:表示在某一时间间隔内观测到的每秒设备中断数
    cs:每秒上下文切换。这个值越小越好

    这两个值越大,由内核消耗的cpu时间越多。

    cpu 显示cpu 的使用状态

    us: 用户模式消耗的cpu时间百分比。该值较高事i,说明用户进程消耗的cpu时间比较多,比如:如果该值长期超过50%,则需要对进程算法或代码等进行优化。
    sy:内核模式消耗的cpu时间百分比。如果太高,表示系统调用时间长。
    id:处于空闲状态的cpu时间百分比。如果该值持续为0,同时sy是us的2倍,则通常说明系统则面临着cpu 资源的短缺。
    wa:IO等待消耗的cpu时间百分比。该值较高时,说明IO等待比较严重,这可能磁盘大量做随机访问造成的,也可能是磁盘性能出现了瓶颈

    top 直接终止消耗较大的进程

    top 按k + pid 号 回车

    缓存机制

    在linux 系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,
    当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。

    1、缓存机制优点:减少系统调用次数,降低cpu上下文切换和磁盘访问频率。
    2、cpu上下文切换:cpu给每一给进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程当前运行状态保存下来,然后加载下一个任务
    这个过程叫做上下文切换。实质上就是被终止运行进程与运行进程的进程切换。

    swap 用途

    swap 意思是交换分区,通常我们说是虚拟内存,是从硬盘中划分出一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不同的程序
    然后将这些程序临时放到swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到swap

    buffer 和cache 区别

    cache 缓存: 是把读取过的数据保存起来,重新读取时若命中就不要去读磁盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
    buffer 缓冲: 是根据磁盘读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

    mysql 服务器IO 高

    1、磁盘子系统设备性能差,或采用ext2/ext3之类文件系统,或采用cfq之类的io scheduler,所以IOPS提上不去;

    2、SQL效率不高,比如没有索引,或者一次性读取大量数据,所以需要更多的I/O;

    3、可用内存太小,内存中能缓存/缓冲的数据不多,所以需要更多的I/O。

  • 相关阅读:
    解决“google快照无法打开”的简单而有效的方法~
    在Struts2里面嵌入Spring
    HDU
    设计模式大总结(二)
    Node.js入门笔记
    草图检索和识别[开源]
    2019-10-31-VisualStudio-断点调试详解
    2019-10-31-VisualStudio-断点调试详解
    2019-9-2-C#-设计模式-责任链
    2019-9-2-C#-设计模式-责任链
  • 原文地址:https://www.cnblogs.com/fengmeng1030/p/8435245.html
Copyright © 2011-2022 走看看