调优常用命令:

CPU:top vmstat sar iotop
内存:free top vmstat
磁盘:iotop vmstat sar
网络:sar vmstat nethogs nload

top命令详解:

c可显示进程路径
z临时改变颜色
e切换资源显示单位k、m、g

Linux系统调优参数详解_内存

load average: 0.06, 0.60,0.48
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟前、 5 分钟前、 15 分钟前的平均值。PS:可以对比1分钟前的负载值和5分钟15分钟的值,如果最近1分钟数值变低,说明负载在下降,同理如果变得更高,说明还有问题。
如果服务器的 CPU 为 1 核心,则 load average 中的数字 >=3 负载过高,如果服务器的 CPU 为 4 核心,则 load average 中的数字 >=12 负载过高。
经验:单核心, 1 分钟的系统平均负载不要超过 3,就可以,这是个经验值
PS:如5核心5*3,负载值不大于15则正常。

Tasks: 481 total 进程总数
1 running 正在运行的进程数
480 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数

Cpu(s): 0.0% us 系统用户进程使用 CPU 百分比。
0.0% sy 内核中的进程占用 CPU 百分比
0.0% ni 用户进程空间内改变过优先级的进程占用 CPU 百分比
98.7% id 空闲 CPU 百分比。PS:数值越高CPU越空闲
0.0% wa   cpu 等待 I/0 完成的时间总量。PS:CPU等待时间,时间过长表示存在问题

Mem: 2033552k total 物理内存总量;PS:总内存
1376636k free 空闲内存总量;PS:剩余多少
340392k used 使用的物理内存总量;PS:使用了多少内存
316524k buff/cache 用作内核缓存的内存量。
和 free -k 一个意思

CPU调优:

每一秒输出一次状态信息用于分析:#mpstat -P ALL 1
指定输出20次结束:mpstat -P ALL 1 20
usr:用户空间 CPU 使用占比。
nice:低优先级进程使用 CPU 占比。 nice 值大于 0。
sys:内核空间 CPU 使用占比。
iowait:CPU 等待 IO 占比(等待时间)。
irq:CPU 处理硬中断占比。
soft:CPU 处理软中断占比。
idle:CPU 空闲时间占比。PS:99代表99%空闲
guest 与 steal 与虚拟机有关,暂不涉及。

内存调优:

#free -h
total:总内存
used:已用内存
free:空闲内存
shared:共享内存
buff/cache:缓存
available:真正可以使用的内存
在 centos7 系统中 available 这一列是真正可用内存。 available 包括了 buff/cache 中一些可以被释放的内存。 当物理内存不够用的时候,内核会把非活跃的数据清空。
#cat /proc/meminfor
Acrive:活跃内存。PS:如果活跃内存占用很多,代表内存不够用了。
Inactive:非活跃内存。PS:内存不够的情况就会把不活跃的交换到swap内存
#top
大写M根据内存排序,使用c现在占用程序的完整路径,其中带有[]的一般为内核进程,ps命令带有[]的同理
方法 2: 按照实际使用内存,从大到小排序显示所有进程列表
# ps -aux --sort -rss | more 内存降序排序(去掉减号就是升序)
或:
# ps -aux --sort -rss > a.log

IO调优:

Linux系统调优参数详解_cpu_02

Linux系统调优参数详解_调优_03

iostat常用参数:
-d 仅显示磁盘统计信息。
-k 以K为单位显示每秒的磁盘请求数,默认单位块。
-p device | ALL 用于显示块设备及系统分区的统计信息。
iostat -d -k -p /dev/sda
每列含意:
kB_read/s 每秒从磁盘读入的数据量,单位为K.
kB_wrtn/s 每秒向磁盘写入的数据量,单位为K.
kB_read 读入的数据总量,单位为K.
kB_wrtn 写入的数据总量,单位为K.
%iowait 等待时间
%idle 空闲占比
iotop的参数:
-o,  只显示在读写硬盘的程序
-d 设定显示时间间隔。 刷新时间
iotop 常用快捷键:
<- / ->: 左右箭头:改变排序方式,默认是按 IO 排序。
r:改变排序顺序。
o:只显示有 IO 输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出, 按 q 或 ctrl+C
例1: 找出使用磁盘最多的进程
iotop -o -d 1 #显示正在使用磁盘的进程
IO>表示IO使用占比

Linux系统调优参数详解_内存_04

查看系统整体运行状态:

# vmstat 1 20 每个一秒输出一次,共输出20次

Linux系统调优参数详解_io_05

每一列参数作用:
r 运行状态的进程个数 。展示了正在执行和等待 cpu 资源的任务个数。当这个值,不超过3*核心为正常
b 不可中断睡眠 正在进行 i/o 等待--阻塞状态的进程个数 进程读取外设上的数据,等待时
swpd 虚拟内存
free 剩余内存,单位是 KB(物理内存,至少要留有5%剩余(峰值),甚至更多)
buff #内存从磁盘读出的内容,即缓存(物理内存,缓存)
cache #内存需要写入磁盘的内容(缓存,缓存到内存,相对磁盘读写会变小)
si swapin swap 换入到虚拟内存的量(如果内存够用一般为0)
so swapout 内存换出到 swap 换出的越多,内存越不够用(虚拟内存)
bi blockin 从硬盘往内存读。 单位是块。 把磁盘中的数据读入内存(每秒磁盘读)
bo blockout 从内存拿出到硬盘 (周期性的有值) 写到硬盘
#判断是读多还是写多,是否有 i/o 瓶颈(每秒磁盘写)
in 系统的中断次数, cpu 调度的次数多,即上下文切换次数
cs 每秒的上下文切换速度
CPU 上下文切换--程序在运行的时候, CPU 对每个程序切换的过程。
us 用户占用CPU比,一般用户占用比系统多
sy 系统占用CPU比,数组过大内核使用占用过高
id 空闲CPU占比 
wa 等待时间
st虚拟机从物理机占用CPU比

sar命令采集CPU信息:

# sar -u 2 5 -o cpu.sar 每两秒收集一次共收集5次保存到cpu.sar

Linux系统调优参数详解_调优_06

在显示内容包括:
%user: CPU 处在用户模式下的时间百分比。
%system: CPU 处在系统模式下的时间百分比。
%iowait: CPU 等待输入输出完成时间的百分比。
%idle: CPU 空闲时间百分比。
在所有的显示中,我们应主要注意%wio 和%idle, %wio 的值过高,表示硬盘存在 I/O 瓶颈, %idle
值高,表示 CPU 较空闲,如果%idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。 %idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。
实例 2: 查看二进制文件 cpu.sar 中的内容
sar -u -f cpu.sar

sar命令详解:

查看 sar 的计划任务并读取日志:
1、查看 sar 的计划任务
vim /etc/cron.d/sysstat
*/10 * * * * root /usr/lib64/sa/sa1 1 1 #每 10 分钟生成一次

注: 生成的日志位置: # ls /var/log/sa
2、 读取日志
ls /var/log/sa #只要安装 sar 后就会定期收集系统信息。

使用参数-n 查看网络接口流量情况:
sar -n DEV 1 10 -o /var/log/sa/sa04
sar -n DEV -f /var/log/sa/sa04 #查看网络相关信息。

sar命令查看内存和硬盘报告
-r 查看内存
sar -r -f /var/log/sa/sa15
-d:硬盘使用报告
sar -d -f /var/log/sa/sa15

sar 最大特点是可以监控所有状态, 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