Linux操作系统调优工具

一、 系统调优概述和查看CPU负载相关工具
1、 系统调优思路
性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS 各子系统达到一种平衡的定义。具体步骤如下:
1)系统的运行状况: CPU -> MEM -> DISK-> NETWORK -> application
2)分析是否有瓶颈(依据当前应用需求)
3)调优(采取一定措施使变得优异)

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

2、 查看CPU负载的工具
2.1 使用uptime命令查看系统cpu负载
[root@xuegod120 ~]# uptime
Linux操作系统调优工具_第1张图片
Linux操作系统调优工具_第2张图片

例1:找出当前系统中,cup负载最高的服务器?
服务器1: load average: 0.15, 0.08, 0.01 1核
服务器2: load average: 4.15, 6.08, 6.01 1核
服务器3: load average: 10.15, 10.08, 10.01 4核
答案:服务器2负载过高。
经验:单核心,1分钟的系统平均负载不要超过3,就可以,4核心不要超过12,这是个经验值。所以如果服务器的CPU为1核心,则load average中的数字 >=3 负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。

3、 实战:找出系统中使用CPU最多的进程
3.1 运行top命令,按下大写的P,可以按照CPU使用率来排序显示
Linux操作系统调优工具_第3张图片

3.2 按照实际使用CPU,从大到小排序显示所有进程列表
[root@xuegod120 ~]# ps -aux --sort -pcpu | more
注释:-pcpu 可以显示出进程绝对路径,方便找出木马程序的运行路径
Linux操作系统调优工具_第4张图片

3.3 查看cpu信息
[root@xuegod120 ~]# cat /proc/cpuinfo
Linux操作系统调优工具_第5张图片

扩展说明:
top 中 VIRT、RES和SHR的含意:
VIRT:virtual memory usage 虚拟内存
1)进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等;
2)假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量。
RES:resident memory usage 常驻内存
1)进程当前使用的内存大小,但不包括swap out;
2)包含其他进程的共享;
3)如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反;
4)关于库占用内存的情况,它只统计加载的库文件所占内存大小。

SHR:shared memory 共享内存
1)除了自身进程的共享内存,也包括其他进程的共享内存;
2)虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小;
3)计算某个进程所占的物理内存大小公式:RES – SHR;
4)swap out后,它将会降下来。

3.4 使用mpstat查看CPU运行情况
[root@xuegod120 ~]# yum -y install sysstat
[root@xuegod120 ~]# rpm -qf which mpstat #查看命令输入那个rpm包
sysstat-10.1.5-17.el7.x86_64
[root@xuegod120 ~]# mpstat
在这里插入图片描述
每列参数说明:
usr:用户空间CPU使用占比。
nice:低优先级进程使用CPU占比。nice值大于0。
sys:内核空间CPU使用占比。
iowait:CPU等待IO占比。
irq:CPU处理硬中断占比。
soft:CPU处理软中断占比。
idle:CPU空闲时间占比。
guest与steal与虚拟机有关,暂不涉及。

[root@xuegod120 ~]# mpstat -P ALL #查看所有cpu运行状态
因为只配置了一核cpu所有只能看到有一个,如果是多核的就会多行显示
在这里插入图片描述
[root@xuegod120 ~]# mpstat -P ALL 1 100 #每1秒钟刷新一次,连续刷新100次

Linux操作系统调优工具_第6张图片

二、 查看memory运行状态的攻击
1、 使用free命令查看内容的使用情况
Linux操作系统调优工具_第7张图片
注:在centos7系统中available 这一列是真正可用内存。 available包括了buff/cache中一些可以被释放的内存。当物理内存不够用的时候,内核会把非活跃的数据清空。

2、 通过读取内存文件,查看非活跃内存
Linux操作系统调优工具_第8张图片
Active:活跃内存,指进程一直读写的内存空间
Inactive:非活跃内存
注:当内存不够用时,kernel总是把不活跃的内存交换到swap空间。如果inactive内存多时,加swap空间可以解决问题,而active多,则考虑加内存。

3、 找出系统中使用内存最多的进程
方法1:使用top命令,按下大写M,可以按照内存使用率来排序显示
top------ M
Linux操作系统调优工具_第9张图片
方法2:按照实际使用内存,从大到小排序显示
[root@xuegod120 ~]# ps -aux --sort -rss | more #去掉-号,表示升序(ps -axu –sort rss | more)
在这里插入图片描述

三、 查看IO运行状态的工具
1、 查看文件系统块大小
对于ext4文件系统,查看大小:
[root@xuegod120 ~]# 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字节。

对于xfs文件系统,查看大小
[root@xuegod120 ~]# xfs_growfs -l /dev/sda1 | grep size #查看分区的块大小
Linux操作系统调优工具_第10张图片

2、 通过iostat命令查看IO是否存在瓶颈
参数:
-d:仅显示磁盘统计信息
-k:以k为单位显示每秒的磁盘请求书,默认单位块
-p:device|ALL 用于显示块设备及系统分区的统计信息
[root@xuegod120 ~]# iostat -d -k -p
Linux操作系统调优工具_第11张图片
每列含意:
kB_read/s 每秒从磁盘读入的数据量,单位为K.
kB_wrtn/s 每秒向磁盘写入的数据量,单位为K.
kB_read 读入的数据总量,单位为K.
kB_wrtn 写入的数据总量,单位为K.
3、 给磁盘写入数据,写入时尽可能不读取磁盘
[root@xuegod120 ~]# dd if=/dev/zero if=a.txt bs=10M count=1000;sync
[root@xuegod120 ~]# iostat -d -k -p
和上面对比,每秒钟的写入速度有增加,总的写入量也有增加
Linux操作系统调优工具_第12张图片

4、 公司服务器很卡,查看cpu使用率不高,内存也够用,但就是卡,尤其是打开程序或文件时,更加卡,需要找出是哪里的问题?
使用iotop命令,查看那个进行使用的磁盘读写最多
[root@xuegod120 ~]# yum -y install iotop
参数:
-o:only 只显示在读写硬盘的程序
-d SEC:-delay=SEC 设定显示时间间隔(刷新时间)

iotop常用快捷键:
<- / ->:左右箭头:改变排序方式,默认是按IO排序。
r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出,按q或ctrl+C

4.1 找出使用磁盘最多的进程
[root@xuegod120 ~]# iotop -o -d 1 #显示使用磁盘最多的进行,1s刷新一次
Linux操作系统调优工具_第13张图片

四、 查看Network运行状态工具
1、 使用nload,找出系统中使用网络最多的进程
1.1. 使用nload监控总体带宽使用情况
[root@xuegod120 ~]# yum -y install epel-release
[root@xuegod120 ~]# yum -y install nload
如果使用yum不能安装,请单独下载rpm包后上传服务器,进行安装

1.2. 开始监控
可以看到随着访问的增多,网络消耗也在增加
Linux操作系统调优工具_第14张图片

2、 使用nethogs找出使用带宽最多的进程
2.1. 安装nethogs包
[root@xuegod120 ~]#
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nethogs-0.8.5-1.el7.x86_64.rpm
或者直接通过网页下载后上传到服务器,进行安装。
使用rpm安装报错:
[root@xuegod120 ~]# rpm -ivh nethogs-0.8.5-1.el7.x86_64.rpm
error: Failed dependencies:
libpcap.so.1()(64bit) is needed by nethogs-0.8.5-1.el7.x86_64
原因:缺少libpcap的64位运行库文件,使用yum安装即可
yum -y install libpcap.x86_64

[root@xuegod120 ~]# rpm -ivh nethogs-0.8.5-1.el7.x86_64.rpm

2.2. 在另一个终端使用wget下载文件,然后使用nethogs监控
Linux操作系统调优工具_第15张图片

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

例:
[root@xuegod120 ~]# vmstat #系统自带的,不需要单独安装
procs -----------memory---------- —swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 361292 69344 420744 0 0 21 3 40 42 0 1 98 1 0
如图:

每一列参数作用:
r 运行状态的进程个数 。展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
b 不可中断睡眠 正在进行i/o等待--阻塞状态的进程个数 进程读取外设上的数据,等待时

free 剩余内存,单位是KB
buffers #内存从磁盘读出的内容
cached #内存需要写入磁盘的内容

si swapin swap换入到内存
so swapout 内存换出到swap 换出的越多,内存越不够用

bi blockin 从硬盘往内存读。 单位是块。 把磁盘中的数据读入内存
bo blockout 从内存拿出到硬盘 (周期性的有值) 写到硬盘
#判断是读多还是写多,是否有i/o瓶颈

in 系统的中断次数,cpu调度的次数多
cs 每秒的上下文切换速度
CPU上下文切换--程序在运行的时候,CPU对每个程序切换的过程。
更多内存参以一下表格: vmstat每个字段含义说明

2、 使用sar命令记录系统一段时间的运行状态
安装sar命令
[root@xuegod120 ~]# yum -y install sysstat
[root@xuegod120 ~]# rpm -qf which sar
sysstat-10.1.5-17.el7.x86_64

sysstat 工具包可以把检查到的信息保存下来,存在/var/log/sa目录下。 sar 默认显示每10分钟统计一次状态信息(从装sysstat包开始)
sar 命令行的常用格式: sar [options] [-A] [-o file] t [n]
在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
下面只列出常用选项:
-A:所有报告的总和。
-n:网络接口的情况。
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。
-r:没有使用的内存页面和硬盘块。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。
-o 文件名:打印到屏幕并将采样结果以二进制形式存入当前目录下的文件中。
-f 文件名:查看之前保存的二进制文件。
-d:显示磁盘。
-d 1 100 #必须得指定次数。
-c:每秒创建进程的个数。
-i 1 10 #指定时间间隔。
-P:查看cpu。
-r:查看内存。
-w:每秒上下文切换次数。
-o /cpu.sar #保存并显示。
-f cpu.sar #读取。

例1:每2秒钟采样一次,连续采样5次,观察cpu使用情况,并将采样结构以二进制形式存入当前目录下的文件cpu.sar中
[root@xuegod120 ~]# sar -u 2 5 -o cpu.sar
Linux操作系统调优工具_第16张图片
在显示内容包括:
%usr:CPU处在用户模式下的时间百分比。
%sys:CPU处在系统模式下的时间百分比。
%wio:CPU等待输入输出完成时间的百分比。
%idle:CPU空闲时间百分比。
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

查看cpu.sar文件
[root@xuegod120 ~]# sar -u -f cpu.sar #不能使用cat查看,是乱码
Linux操作系统调优工具_第17张图片

3、 查看sar的计划任务并读取日志
默认是10分钟执行一次采用,并保存到/var/log/sa
Linux操作系统调优工具_第18张图片

查看网络接口的流量情况:
[root@xuegod120 ~]# sar -n DEV -f /var/log/sa/sa27
Linux操作系统调优工具_第19张图片

4、 查看内存和硬盘
[root@xuegod120 ~]# sar -r -f /var/log/sa/sa27 #-r是查看内存
Linux操作系统调优工具_第20张图片

[root@xuegod120 ~]# sar -d -f /var/log/sa/sa27 #-d是查看内存
在这里插入图片描述

sar可以查看所有状态,其他使用方法:
sar -r 1 #查看内存
sar -n ALL #查看所有
sar -b 1 10 #缓冲区使用情况,每秒刷新一次,查看10次
sar -I ALL 1 10
sar -r -f /tmp/file -n -r -b -m
sar -s 15:00:00 -e 15:30:00 #查看某个时间段,系统运行情况
sar -s 15:00:00 -e 15:30:20 -f /var/log/sa/sa01
sar -r -s 15:00:00 -e 15:30:20 -f /var/log/sa/sa01

你可能感兴趣的:(第三阶段-集群类)