前言
对于我们的服务器为什么要性能优化,这个不用多数,大家都懂的!在遇到性能问题的时候我们需要定位是哪里出现了性能瓶颈。下面让我们聊一聊解决瓶颈的思路。
一、影响服务器性能的因素CPU(cpu的运行速度直接影响服务器的性能)
硬盘(IO的读写速度是最直接的影响)
内存(尽量不要使用SWAP)
网卡(网卡的吞吐量)
二、性能分析的步骤
1、服务器需要长期的监控,采集服务器性能指标(可以使用zabbix)
2、遇到性能瓶颈的时候,我们需要使用一些工具来定位问题(Vmstat,top,iostat 等)
三、可能会造成性能瓶颈的因素
1、服务器硬件配置
2、程序设计缺陷(曾经遇到过死循环,CPU利用率增高,拖慢服务器)内存泄露。
3、物理内存不够时使用了交换分区,造成CPU和磁盘IO的开销
4、数据库查询sql没有走索引,或者索引建立的不合理
四、vmstat命令详解1
2
3
4
5
6
7[root@tshare365 ~]# vmstat 1 3
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 776188 80316 39656 0 0 13 1 13 10 0 0 100 0 0
0 0 0 776148 80316 39676 0 0 0 0 17 10 0 0 100 0 0
0 0 0 776172 80316 39676 0 0 0 0 17 12 0 0 100 0 0
[root@tshare365 ~]#
注释:
vmstat 1 3 表示每隔一秒采集一次数据,共采集三次
procs:
r:表示正在运行的进程数和等待cpu时间片的进程数(如果r的值大于我们CPU的核心数,表示CPU不足,此时我们需要增加CPU)
b:等待运行的进程数(如果这个值较大,我们需要查看服务的内存使用情况,看看是否使用了交换分区,还用磁盘的IO情况)
memory:
swpd:虚拟内存使用大小,这个值最理想状态是为0,表示我们的内存足够
free:表示当前空闲的物理内存数量(以KB为单位)
buff:表示buffers cache的内存数量,一般对块设备的读写才需要缓冲
cache:表示page cached的内存数量,一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,就说明cached文件数较多。如果此时IO中的bi比较小,就说明文件系统效率比较好
swap:
si:每秒从交换分区写入内存的大小,也就是从硬盘写入内存
so:如si恰好相反,表示从内存写入交换分区的大小
swap 中的两个值,最理想的状态都是0,表示内存足够大,没有使用交换分区
io:
bi:每秒读取的块数
bo:每秒写入的块数
system:
in:每秒中断数包括时钟中断
cs:每秒上下文切换数
cpu:
us:用户空间消耗的CPU时间(如果这个值一直较高,就应该优化程序了)
sy:内核空间消耗CPU的时间 (这个值较高,说明系统不正常,需要查找原因)
id:CPU空闲状态的时间 (这个值越高,说明CPU跑的很欢)
wa:IO等待所占用的CPU时间(如果这个值较高,有可能是磁盘遇到了瓶颈)
st:虚拟机占用时间(很少关注)
vmstat到此就介绍完了,在vmstat中我们最关心的的指标也就是proc中的r,b,这也是许多面试官最喜欢问的问题,希望大家都能记住!vmstat在平时的工作中还是经常用到的,希望大家用心去体会各个参数的意义!
本博客至此结束,如有什么问题,请留言!