分析

image.png

vmstat

vmstat 几秒看一次 一共看几次
image.png
image.png

进程
procs
r 等待CPU处理的进程数 值超过cpu个数,出现CPU瓶颈。
b 等待磁盘读写而阻塞的进程数(IO)
内存 swpd 正在使用的虚拟内存大小,单位k
free 空闲内存大小
buff 已用的buff大小,对块设备的读写进行缓冲
cache 已用的cache大小,文件系统的cache
swap si 每秒从交换区写入内存的大小,单位kb/s
so 每秒从内存写到交换区的大小
IO bi 每秒读取的块数(读磁盘),单位block 块设备的大小主要看Linux文件系统的配置是多少,一般为1024bytes
bo 每秒写入的块数(写磁盘)
system in 每秒中断数,包括时钟中断 值越大,说明内核消耗的cpu时间会越多
cs 每秒上下文切换数
CPU us 用户进程执行消耗CPU时间 长期超过50%,考虑优化程序算法
sy 系统进程消耗的CPU时间 us+sy的参考值为80%,如果大于,说明CPU不足。
ld 空闲时间(包括IO等待时间) 一般来说 us+sy+id=100
wa 等待IO时间 wa过高时,说明io等待比较严重,可能为磁盘大量随机访问造成的,或者是磁盘的带宽出现瓶颈。
st 衡量虚拟机CPU的指标,是指分配给本虚拟机的时间片被同一宿主机别的虚拟机使用。 一般st值高的话,说明宿主机的性能到了瓶颈。

mpstat

image.png

%usr 用户进程消耗的CPU百分比
%nice nice值为负的进程的CPU占用百分比
%sys 内核进程消耗的CPU百分比
%iowait IO等待时间
%irq 硬中断时间(由硬件本身引发的,用来通知系统硬件状态的变化)
%soft 软中断时间
%steal 没理解
%guest CPU运行虚拟化的占比
%gnice CPU运行niced guest所花费的时间百分比
%idle CPU除去等待磁盘IO外的所有空闲时间

CPU架构

SMP(一致存储访问结构,也叫非对称多处理架构)

使众多CPU在单一系统进行运转。简述:多个CPU共用同一个内存系统。

缺点:由于每个CPU连接的是同一个存储总线,所以,加CPU不一定能达到 1+1 = 2的效果

NUMA(非同一内存访问结构)

多处理器多内存的架构,内存访问时间取决于处理器的内存位置。处理器访问自己的本地存储器的速度比非本地存储器快。简述:每个CPU都有自己的内存系统,架构上像是多台服务器捆版在一起。

缺点:对于跨CPU的运算非常慢,所以在使用NUMA架构的时候尽量不要进行跨CPU的运算。

MPP(对称多处理架构)

在一台计算机上汇集了一组处理器,各个处理器之间共享内存子系统和总线结构。

对CPU的要求很高:
1.CPU必须内置APIC单元(高级可编程中断控制器,是Intel多处理规范的核心)
2.相同的产品型号
3.完全相同的运行频率
4.尽量选择相同生产批次的CPU,避免不同的生产批次CPU发生一颗CPU负载过高,另一颗负载很低的问题。

调优办法

横向扩展

增加服务器数量,将服务器架构集群化。

纵向扩展

从CPU架构入手,一般使用NUMA

微调

进程优先级

通过设置进程的nice值来调整CPU的资源分配,nice(-20~19)越小,进程的权重越大。

指令
renice -20 pid

example 将http的进程一键设置为-20
ps -ef|grep httpd|grep -v grep|awk ‘{print $2}’|xargs renice -20

CPU亲和性

为进程分配固定的CPU
taskset -c cpu某一个核(双核的话就是0,1) 进程启动命令
image.png
example taskset -c 0 /etc/httpd

云计算

将传统的物理机房,改变为云计算的方式,能够通过线上的方式增加性能,比如分布式,集群等等。
云计算,解决了传统模式下需要横向扩展与纵向扩展的难题,提高了服务器性能升级的效率。

定义中断的亲和性

将中断集中在CPU的某一个核上,避免由于中断影响进程的运行。
查看中断分布情况 cat /proc/interrupts
image.png
指令 echo 核id /proc/irq/irq的id/smp_affinity
example : echo 2 /proc/irq/19/smp_affinity

OSPF+LVS

一种通过虚拟路由实现的LVS高可用集群