系统调优4大子系统
- 1:找出系统中使用CPU最多的进程
- 2:找出系统中使用内存最多的进程
- 3:找出系统中对磁盘读写最多的进程
- 4:找出系统中使用网络最多的进程
系统调优概述
系统的运行状况: CPU-> MEM -> DISK-> NETWORK -> 应用程序调优
系统性能优化的4个子系统:
CPU
Memory
IO
Network
1.找出系统中使用CPU最多的进程
查看CPU负载相关工具uptime命令
[root@jumpserver ~]# uptime 19:13:35 up 3:59, 1 user, load average: 0.00, 0.01, 0.05
其内容如下:
19:13:35 | 当前时间 |
up 3:59 | 系统运行时间 ,说明此服务器连续运行3小时59分钟了 |
1 user | 当前登录用户数 |
load average: 0.00, 0.01, 0.05 | 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 |
如果服务器的CPU为1核心,则load average中的数字 >=3 负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高
单核心,1分钟的系统平均负载不要超过3,就可以
使用top命令
运行top , 找出使用CPU最多的进程 ,按大写的P,可以按CPU使用率来排序显示
按照实际使用CPU ,从大到小排序显示所有进程列表
[root@jumpserver ~]# ps -aux --sort -pcpu | less #按cpu降序排序查看 # -pcpu 可以显示出进程绝对路径,方便找出木马程序运行的路径
2.找出系统中使用内存最多的进程
使用top命令
运行top , 然后按下大写的M 可以按内存使用率来排序显示
[root@jumpserver ~]# top
按照实际使用内存 ,从大到小排序显示所有进程列表
[root@jumpserver ~]# ps -aux --sort -rss | less # 内存降序排序
3、找出系统中对磁盘读写最多的进程
查看系统中哪个磁盘或分区最繁忙
通过iostat命令查看IO是否存在瓶颈
常用参数 :
-d 仅显示磁盘统计信息
-k 以K为单位显示每秒的磁盘请求数,默认单位块
-p device | ALL 用于显示块设备及系统分区的统计信息
安装iostat
[root@jumpserver ~]# yum -y install sysstat [root@jumpserver ~]# iostat -d -k -p /dev/sda Linux 3.10.0-862.el7.x86_64 (jumpserver) 2018年08月06日 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.49 17.71 4.42 305878 76321 sda1 0.06 1.40 0.12 24105 2048 sda2 0.42 16.26 4.30 280725 74273
每列含意 :
kB_read/s 每秒从磁盘读入的数据量,单位为K
kB_wrtn/s 每秒向磁盘写入的数据量,单位为K
kB_read 读入的数据总量,单位为K
kB_wrtn 写入的数据总量,单位为K
给磁盘写入一些内容 , 写入时尽可能不读磁盘
[root@jumpserver ~]# dd if=/dev/zero of=a.txt bs=10M count=1000 ; sync # 读入的数据用/dev/zero , /dev/zero不会读磁盘 # #把内存中的数据快速写到磁盘上。 只做dd不执行sync,不容易看不出写入效果 [root@jumpserver ~]# iostat -p sda -dk Linux 3.10.0-862.el7.x86_64 (jumpserver) 2018年08月06日 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1.43 36.59 460.93 669406 8432993 sda1 0.06 1.32 0.11 24105 2048 sda2 1.37 35.21 460.82 644253 8430945
查看哪个进程使用磁盘读写最多
iotop命令,查看哪个进程使用磁盘读写最多
安装iotop
参数:
-o, -only 只显示在读写硬盘的程序
-d SEC, -delay=SEC 设定显示时间间隔 刷新时间
退出 ,按q或ctrl+C
[root@jumpserver ~]# yum -y install iotop
[root@jumpserver ~]# iotop -o -d 1 # 显示正在使用磁盘的进程
在另一个终端对磁盘进行大量读操作 ,执行 :
[root@jumpserver ~]# find /
已经知道怎么找出使用系统的cpu ,内存 ,磁盘最多的进程
哪怎么找出系统中使用网络最多的进程呢
windows中有流量显示 ,双击后,可以查到每个进程使用的流量 , Linux有吗
Linux 可以使用nload
找出系统中使用网络最多的进程
1.使用nload监控总体带宽使用情况
2.使用nethogs找出使用带宽最多的进程
安装nload :
[root@jumpserver ~]# yum -y install nload [root@jumpserver ~]# nload # 开始监控
然后另一个终端上运行 :
[root@jumpserver ~]# yum -y install httpd [root@jumpserver ~]# systemctl start httpd [root@jumpserver ~]# ab -n 1000 -c 2 http://www.baidu.com/index.html # 产生一些测试数据
查看结果:
Incoming : 下载 Outgoing :上传
2.使用nethogs找出使用带宽最多的进程
安装nethogs :
[root@jumpserver ~]# yum -y install nethogs [root@jumpserver ~]# nethogs
在另一个终端生成一些数据 :
[root@jumpserver ~]# wget http://mirrors.zju.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso
可以看到进程号 , 用户 , 进程都可以看到