安装iostat
yum -y install sysstat
作用:iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
用法:iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]
主要选项如下。
-c:显示CPU的使用情况。
-d:显示磁盘的使用情况。
-k:表示按千字节每秒显示数据。
-t:打印汇报的时间。
-v:表示打印出版本信息和用法。
-x device:指定要统计的设备名称,默认为所有的设备。
interval:指每次统计间隔的时间,count指按照这个时间间隔统计的次数。
使用
iostat -xm 3 #### x表示显示扩展统计信息,m表示以兆为单位显示,3表示每隔3秒显示
[root@localhost ~]# iostat -xm 3
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain) 2017年11月26日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.49 0.02 1.13 5.49 0.00 92.87
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.15 6.27 1.25 0.22 0.02 66.32 0.27 36.00 36.14 35.33 10.87 8.17
dm-0 0.00 0.00 5.67 1.01 0.21 0.02 71.01 0.27 40.75 38.96 50.86 12.20 8.15
dm-1 0.00 0.00 0.05 0.00 0.00 0.00 17.99 0.00 17.05 17.05 0.00 15.92 0.08
AVG-CPU属性:
%user CPU处在用户模式下的时间百分比
%nice CPU处在带NICE值的用户模式下的时间百分比
%sys CPU处在系统模式下的时间百分比
%iowait CPU等待IO完成时间的百分比
%steal 管理程序维护另一个虚拟处理器时,虚拟CPU的无意的等待时间的百分比
%idle 闲置CPU的百分比
提示:
如果%iowait的值过高,表示硬盘存在I/O瓶颈;
如果%idle的值过高,表示CPU较空闲,如果%idle的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量;
如果%idle的值如果持续很低,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
Device属性:
rrqm/s 每秒进行merge的读操作数目
wrqm/s 每秒进行merge的写操作数目
r/s 每秒实际读取需求的数量
w/s 每秒实际写入需求的数量
rsec/s 每秒读取区段的数量
wsec/s 每秒写入区段的数量
rKB/s 每秒实际读取的大小,单位为KB
wKB/S 每秒实际写入的大小,单位为KB
avgrq-sz 需求的平均大小区段
avgqu-sz 需求的平均队列长度
await 等待I/O平均的时间(millisecondes)
r_await
w_await
svctm I/O需求完成的平均时间(毫秒)
%util 一秒中有百分之多少的时间用于I/O操作,即被IO消耗的CPU百分比
提示:
如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果svctm比较接近await,说明I/O几乎没有等待时间;
如果await远大于svctm,说明I/O队列太长,IO响应太慢,则需要进行必要优化。
如果avgqu-sz比较大,也表示有当量IO在等待。
二、磁盘
1.磁盘的访问模式
顺序访问:
1.顺序的访问磁盘上的快;
2.一般经过测试后,得到改值的单位MB/S,表示为磁盘带宽,普通硬盘在50~100MB/s
随机访问:
1.随机的访问磁盘上的块
2.也可以用MB/S进行表示,但是通常使用IOPS(每秒处理IO的能力),普通硬盘在100-200 IOPS
下面是顺序访问和随机访问的示例图:
拷贝文件属于顺序访问,数据库中访问数据属于 随机访问;
数据库对数据的访问做了优化,把随机访问转成顺序访问。
磁盘的分类
HDD:
1.盘片通过旋转,磁头进行定位,读取数据;
2.顺序性较好,随机性较差;
3.常见转速
① 笔记本硬盘:5400转/分钟;
② 桌面硬盘:7200转/分钟;
③ 服务器硬盘:10000转/分钟、15000转/分钟;
④ SATA:120~150 IOPS
⑤ SAS:150~200 IOPS
从理论上讲,15000转/分钟,最高是15000/60约等于250IOPS
由于机械盘片需要旋转,转速太高无法很好的散热
如果一个HDD对4K的块做随机访问是0.8MB/s,可通过0.8*(1024/4)=200 或者(0.8*1000)/ 4 = 200 得到IOPS,但是这个值存在部分干扰因素,如cache等。
SSD:
1.纯电设备
2.由FLash Memory组成
3.没有读写磁头
4.MLC闪存颗粒对一般企业的业务够用。目前SLC闪存颗粒价格较贵
5.IOPS高
50000+ IOPS
读写速度非对称以INTEL SSD DC-S3500例子:
Random 4KB3 Reads: Up to 75000 IOPS
Random 4KB Writes: Up to 115000 IOPS
Random 8KB3 Reads: Up to 47500 IOPS
Random 8KB Writes: Up to 5500 IOPS
当写入数据时,要先擦除老数据,在写入新数据
擦除数据需要擦除整个区域(128K or 256K)一起擦除(自动把部分有用的数据挪到别的区域)
8K的块的话用的时间几乎就是4K的块的一倍的时间。因为存的块越大读的时间越多。服务器的系统文件一般都是4K的块。。
使用SSD的话建议数据库页的大小设置成8K或4K。最好是用8K,4K并发量高的话不知道是否会有问题,理论上是没问题。但是为了安全起见还是用8K的就好了。innodb_page_size=8K。
上线之前,SSD需要经过严格的压力测试(一周时间),确保性能平稳。
Endurance Rating
表示该SSD的寿命是多少
比如450TBW,表示这个SSD可以反复写入的数据总量是450T(包括添加和更新)
SSD线上参数设置
磁盘调度算法改为Deadline
echo deadline > /sys/block/sda/queue/scheduler ##deadline适用于数据库,HDD也建议改成Deadline
MySQL参数
innodb_log_file_size=4G 改参数设置的尽可能大
innodb_flush_neighbors=0
性能更平稳,且至少有15%的性能提升
SSD 品牌推荐
Intel
FusionIO
宝存
不是很建议使用PCI-E的Flash卡(PCI-E插槽的SSD)
性能过剩
安装比较麻烦
3.提升IOPS性能的手段
通过RAID技术
功耗较高
IOPS在2000左右
通过购买共享存储设备
价格非常昂贵
但是比较稳定
底层还是通过RAID实现
直接使用SSD
性能较好的SSD可以达到 万级别的IOPS
建议可以用SSD + RAID5,RAID1+0太奢侈
4.RAID卡
BBU
Battery Backup Unit
目前几乎所有RAID卡都带BBU
需要电池保证写入的可靠性(在断电后,将RAID卡内存中的缓存的数据刷入到磁盘)
电池有充放电时间(30天左右一个周期,充放电会切换成 Write Through,导致性能下降。云上数据库有时候会莫名的变慢,却查不到任何问情况就有可能是SSD在充放电造成的。只是可能的原因之一,也可能是别的情况造成的。具体情况具体分析)
使用闪存(Flash) 的方式,就不会有充放电性能下降的问题
RAID卡缓存
Write Backup (强烈建议开启缓存)
Write Through (不使用缓存,直接写入)
LSI-RAID卡相关命令
查看电量百分比
[root@localhost ~]# megacli -AdpBbuCmd -GetBbuStatus -aALL | grep "Relative State of Charge"
Relative State of Charge: 100%
查看充电状态
[root@localhost ~]# megacli -AdpBbuCmd -GetBbuStatus -aALL | grep "Charger Status"
Charger Status: Complete
查看缓存策略
[root@localhost ~]# megacli -LDGetProp -Cache -LALL -a0
6.文件系统和操作系统
文件系统
XFS/EXT4
noatime(不更新文件的atime标记,减少系统的IO访问)
nobarrier(禁用barrier,可以提高性能,前提是使用write backup和使用BBU)
mount -o noatime,nobarrier /dev/sda/1 /data
操作系统
推荐Linux
关闭SWAP