zoukankan      html  css  js  c++  java
  • Linux系统管理和调优(内存、CPU、磁盘IO、网络)

    系统管理

    Author:Rich七哥

    • 查看 CPU 负载相关工具,找出系统中使用 CPU 最多的进程
    • 查看 Memory 运行状态相关工具,找出系统中使用内存最多的进程
    • 查看 IO 运行状态相关工具,找出系统中对磁盘读写最多的进程
    • 查看 Network 运行状态相关工具,找出系统中使用网络最多的进程
    • 查看系统整体运行状态

    性能优化就是找到系统处理中的瓶颈以及去除这些的过程。 性能优化其实是对 OS 各子系统达到一种平衡的定义,这些子系统包括了:

    CPU Memory IO Network

    这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题. 比如:
    大量的网页调入请求导致内存队列的拥塞; 网卡的大吞吐量可能导致更多的 CPU 开销; 大量的 CPU 开销又会尝试更多的内存使用请求;
    大量来自内存的磁盘写请求可能导致更多的 CPU 以及 IO 问题; 所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,虽然看似是某一个子系统出现问题,其实有 可能是别的子系统导致的.
    调优就像医生看病,因此需要你对服务器所有地方都了解清楚。 当系统出了问题,运行卡,如何快速找出以下进程:

    • 1、找出系统中使用 CPU 最多的进程?
    • 2、找出系统中使用内存最多的进程?
    • 3、找出系统中对磁盘读写最多的进程?
    • 4、找出系统中使用网络最多的进程?

    查看 CPU 负载相关工具

    [root@localhost ~]# uptime
    13:22:30 up 8 min, 1 users, load average: 0.14, 0.38, 0.25 其内容如下:
    
    12:38:33
    当前时间
    up 8 min
    系统运行时间 ,说明此服务器连续运行 8 分钟
    1 user
    当前登录用户数
    load average: 0.06, 0.60,
    0.48
    系统负载,即任务队列的平均长度。 三个数值分别为  1 分 钟、5 分钟、15 分钟前到现在的平均值。
    

    找出系统中使用 CPU 最多的进程?

    方法 1:使用 top 命令
    运行 top , 找出使用 CPU 最多的进程 ,按大写的 P,可以按 CPU 使用率来排序显示

    结果如下

    按照实际使用 CPU,从大到小排序显示所有进程列表

    [root@harry63 ~]# ps -aux --sort -pcpu | more     #按 cpu 降序排序 查看
    注: -pcpu 可以显示出进程绝对路径,方便找出木马程序运行的路径。
    

    查看 Memory 运行状态相关工具

    找出系统中使用内存最多 的进程

    free -h
    total
    used
    free
    shared
    buff/cache
    available
    Mem:
    976M
    291M
    156M
    7.3M
    527M
    479M
    Swap:
    2.0G
    0B
    2.0G
    

    total
    used
    free
    shared
    buff/cache
    available
    Mem:
    976M
    291M
    156M
    7.3M
    527M
    479M
    Swap:
    2.0G
    0B
    2.0G

    物理内存实际空余计算:free + buffers/cache

    按照实际使用内存,从大到小排序显示所有进程列表

    [root@harry63 ~]#   ps -aux   --sort -rss | more 内存降序排序(去掉减号就是升序) 或:
    [root@harry63 ~]#   ps -aux   --sort -rss > a.log
    

    磁盘IO

    • I/O 调优相关查看工具
    [root@harry63 ~]# tune2fs -l /dev/sda1 | grep size
    Filesystem features:         has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
    Block size:                       1024   #   为 1 个字节 。 一个扇区 512 字节。
    
    
    RHEL 7
    [root@harry63 ~]# xfs_growfs -l /dev/sda1 |grep bsize
    data       =                                   bsize=4096     blocks=51200, imaxpct=25 naming                    =version 2                       bsize=4096     ascii-ci=0 ftype=1
    log         =internal                      bsize=4096     blocks=855, version=2
    

    场景: 服务器很卡,查看 CPU 使用率不高,内存也够用,但就是卡,尤其是打开新程序或文 件时,更卡。此时是哪出问题了?

    这时系统的瓶颈在哪里?
    硬盘

    查看哪个进程使用磁盘读写最多?
    iotop 命令,查看哪个进程使用磁盘读写最多 安装:

    [root@harry63 ~]# yum install -y iotop
    
    例:
    [root@harry63 ~]# iotop -o -d 1        #显示正在使用磁盘的进程 在另一个终端对磁盘进行大量读操作,执行:
    
    选项:
    -o:只显示有 io 操作的进程
    -b:批量显示,无交互,主要用作记录到文件。
    -n NUM:显示 NUM 次,主要用于非交互式模式。
    -d SEC:间隔 SEC 秒显示一次。
    -p PID:监控的进程 pid。
    -u USER:监控的进程用户
    
    iotop 常用快捷键:
    <- / ->:左右箭头:改变排序方式,默认是按 IO 排序。
    r:改变排序顺序。 o:只显示有 IO 输出的进程。 p:进程/线程的显示方式的切换。 a:显示累积使用量。
    q:退出
    

    整体查看

    查看内存及系统整体运行状态:
    vmstat :命令是最常见的 Linux/Unix 监控工具,可以展现给定时间间隔的服务器的状态值,包括 服务器的 CPU 使用率,MEM 内存使用,VMSwap 虚拟内存交换情况,IO 读写情况。
    使用 vmstat 可以看到整个机器的 CPU,内存,IO 的使用情况,而不是单单看到各个进程的 CPU 使 用率和内存使用率。 比 top 命令节省资源。
    注:当机器运行比较慢时,建议大家使用 vmstat 查看运行状态,不需要使用 top,因 top 使用资源 比较多。

    未完待续

  • 相关阅读:
    This is very likely to create a memory leak. Stack trace of thread错误分析
    spring boot 2.0 neo4j 使用
    造个简单的轮子倒是不难,但可用性健壮性高到qt这样全世界都在用,就几乎不可能了
    0xC0000005;Access Violation(栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M)
    Object::connect: Cannot queue arguments of type 'QMap<QString,QString>'(要使用qRegisterMetaType<StringMap>进行注册)
    QFileSystemModel只显示名称,不显示size,type,modified
    非Qt工程使用Qt的信号槽机制
    web性能权威指南(High Performance Browser Networking)
    缓存穿透 缓存并发 缓存失效
    互联网架构-基础中间件
  • 原文地址:https://www.cnblogs.com/fusheng11711/p/11820742.html
Copyright © 2011-2022 走看看