请注意,我不是要尽可能地优化co6系统,而是要理解为什么co6表现得如此截然不同,并解决这个问题.
的vmstat / iostat的
我们使用mysql 5.5进行MySQL复制设置.使用RHEL 6作为操作系统的gen8服务器上的MysqL从属执行得很糟糕,使用vmstat和iostat检查显示这些服务器执行的页面输出活动是十倍,磁盘子系统的写入量是十倍. blktrace表明这些写操作不是由MysqL启动的,而是由内核启动的.
第5章:
[dkaarsemaker@co5 ~]$vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 12 252668 102684 10816864 0 0 8 124 0 0 9 1 90 0 0 1 0 12 251580 102692 10817116 0 0 48 2495 3619 5268 6 1 93 0 0 3 0 12 252168 102692 10817848 0 0 32 2103 4323 5956 6 1 94 0 0 3 0 12 252260 102700 10818672 0 0 128 5212 5365 8142 10 1 89 0 0 [dkaarsemaker@co5 ~]$iostat 1 Linux 2.6.18-308.el5 (bc290bprdb-01.lhr4.prod.booking.com) 02/28/2013 avg-cpu: %user %nice %system %iowait %steal %idle 8.74 0.00 0.81 0.25 0.00 90.21 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d0 277.76 399.60 5952.53 2890574849 43058478233 cciss/c0d0p1 0.01 0.25 0.01 1802147 61862 cciss/c0d0p2 0.00 0.01 0.00 101334 32552 cciss/c0d0p3 277.75 399.34 5952.52 2888669185 43058383819 dm-0 32.50 15.00 256.41 108511602 1854809120 dm-1 270.24 322.97 5693.34 2336270565 41183532042 avg-cpu: %user %nice %system %iowait %steal %idle 7.49 0.00 0.79 0.08 0.00 91.64 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d0 300.00 32.00 4026.00 32 4026 cciss/c0d0p1 0.00 0.00 0.00 0 0 cciss/c0d0p2 0.00 0.00 0.00 0 0 cciss/c0d0p3 300.00 32.00 4026.00 32 4026 dm-0 0.00 0.00 0.00 0 0 dm-1 300.00 32.00 4026.00 32 4026 avg-cpu: %user %nice %system %iowait %steal %idle 4.25 0.00 0.46 0.21 0.00 95.09 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d0 507.00 160.00 10370.00 160 10370 cciss/c0d0p1 0.00 0.00 0.00 0 0 cciss/c0d0p2 0.00 0.00 0.00 0 0 cciss/c0d0p3 507.00 160.00 10370.00 160 10370 dm-0 0.00 0.00 0.00 0 0 dm-1 507.00 160.00 10370.00 160 10370 avg-cpu: %user %nice %system %iowait %steal %idle 5.33 0.00 0.50 0.08 0.00 94.09 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d0 318.00 64.00 4559.00 64 4559 cciss/c0d0p1 0.00 0.00 0.00 0 0 cciss/c0d0p2 0.00 0.00 0.00 0 0 cciss/c0d0p3 319.00 64.00 4561.00 64 4561 dm-0 0.00 0.00 0.00 0 0 dm-1 319.00 64.00 4561.00 64 4561
[root@co6 ~]# vmstat 1 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 361044 52340 81965728 0 0 19 1804 36 110 1 1 98 0 0 0 0 0 358996 52340 81965808 0 0 272 57584 1211 3619 0 0 99 0 0 2 0 0 356176 52348 81966800 0 0 240 34128 2121 14017 1 0 98 0 0 0 1 0 351844 52364 81968848 0 0 1616 29128 3648 3985 1 1 97 1 0 0 0 0 353000 52364 81969296 0 0 480 44872 1441 3480 1 0 99 0 0 [root@co6 ~]# iostat 1 Linux 2.6.32-279.22.1.el6.x86_64 (bc291bprdb-01.lhr4.prod.booking.com) 02/28/2013 _x86_64_ (32 cpu) avg-cpu: %user %nice %system %iowait %steal %idle 1.08 0.00 0.67 0.27 0.00 97.98 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 373.48 1203.02 115203.05 11343270 1086250748 dm-0 63.63 74.92 493.63 706418 4654464 dm-1 356.48 1126.72 114709.47 10623848 1081596740 avg-cpu: %user %nice %system %iowait %steal %idle 0.25 0.00 0.19 0.06 0.00 99.50 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 330.00 80.00 77976.00 80 77976 dm-0 0.00 0.00 0.00 0 0 dm-1 328.00 64.00 77456.00 64 77456 avg-cpu: %user %nice %system %iowait %steal %idle 0.38 0.00 0.19 0.63 0.00 98.81 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 570.00 1664.00 128120.00 1664 128120 dm-0 0.00 0.00 0.00 0 0 dm-1 570.00 1664.00 128120.00 1664 128120 avg-cpu: %user %nice %system %iowait %steal %idle 0.66 0.00 0.47 0.03 0.00 98.84 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 317.00 448.00 73048.00 448 73048 dm-0 34.00 0.00 272.00 0 272 dm-1 309.00 448.00 72776.00 448 72776
缩小范围
使用RHEL 5的第8代服务器和使用RHEL 5或6的第7代服务器不显示
这个问题.此外,RHEL 6使用ext3作为文件系统而不是我们的
默认xfs不显示问题.问题实际上似乎介于XFS,gen8硬件和centos 6之间.RHEL 6也显示了这个问题.
编辑29/04:我们在G8机器上添加了qlogic HBA.在光纤通道存储上使用XFS不会显示问题.所以它肯定在xfs / hpsa / p420i之间的交互中.
XFS
rhel 8中较新的xfs似乎能够检测底层条带宽度,但是
仅在使用hpsa驱动程序的p420i控制器上,而不是使用p410i控制器
CCISS.
xfs_info输出:
[root@co6 ~]# xfs_info /MysqL/bp/ Meta-data=/dev/mapper/sysvm-MysqLVol isize=256 agcount=16,agsize=4915136 blks = sectsz=512 attr=2 data = bsize=4096 blocks=78642176,imaxpct=25 = sunit=64 swidth=192 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=38400,version=2 = sectsz=512 sunit=64 blks,lazy-count=1 realtime =none extsz=4096 blocks=0,rtextents=0
在上面标记为OK的所有设置中,sunit / swidth均为0.我们似乎是
无法在mkfs或noalign挂载选项中更改此设置.我们也
不知道这是不是原因.
大页面
其他在rhel 6上有XFS问题的人说,禁用大页面,和
特别透明的大页面可能是有益的.我们两个都禁用了
问题没有消失.
我们已经尝试并观察了许多事情,以下都没有帮助:
>使用numactl影响内存分配.我们注意到g7和g8具有不同的numa布局,没有看到效果
>较新的内核(新的3.6)似乎没有解决这个问题.也没有使用fedora 17.
> iostat不会报告写入事务增加十倍,只会写入写入的字节数
>使用不同的I / O调度程序无效.
>挂载相关文件系统noatime / nobarrier / nopdiratime没有帮助
>更改/ proc / sys / vm / dirty_ratio无效
>在基于2640和2670 cpu的系统上都会发生这种情况
> hpsa-3.2.0无法解决问题
这是一个惊喜,并引起了一些恐慌:Why are my XFS filesystems suddenly consuming more space and full of sparse files?
自2012年11月,内核比2.6.32-279.11.1.el6新的XFS版本航运有来自Red Hat Bugzilla 860787.而产生从那时起一个恼人的负载和性能问题,我有不可预知的性能和更高的运行队列高于平均水平.
对于新系统,我使用的是ZFS或者只是ext4.对于旧系统,我将它们冻结在2.6.32-279.11.1.el6.
尝试使用以下命令回滚到该版本:
yum install kernel-2.6.32-279.11.1.el6.x86_64
除此之外,由于您使用的RAID控制器的类型,典型的优化是有序的:
挂载您的XFS文件系统noatime.您还应该利用Tuned framework:
tuned-adm profile enterprise-storage
将readahead,nobarrier和I / O电梯设置为良好的基线.
编辑:
有很多关于XFS文件系统优化的建议.我在过去十年中专门使用了文件系统,并且由于操作系统发生了潜在的变化,因此不得不偶尔调整参数.我没有经历过像你这样的戏剧性的性能下降,但我也没有使用LVM.
考虑到不同的内核生成,编译默认值,调度程序,包等,我认为它是unreasonable to expect EL5 to act the same way as EL6.
那时我该怎么办?
>我会检查mkfs.xfs参数以及如何构建系统.您是在安装期间使用XFS分区还是在事后创建分区?我在主OS安装后创建了XFS文件系统,因为我在给定参数中有更多的灵活性.
>我的mkfs.xfs创建参数很简单:例如,mkfs.xfs -f -d agcount = 32 -l size = 128m,version = 2 / dev / sdb1.
>我的挂载选项是:noatime,logbufs = 8,logbsize = 256k,nobarrier我会允许XFS dynamic preallocation本机运行而不是像你在这里那样限制它.我的表现有所改善.
> So I don’t use LVM.特别是在硬件RAID之上…特别是在HP Smart Array控制器上,其中有一些类似LVM的功能本机.但是,使用LVM,您无权访问fdisk以创建原始分区.从EL5更改为EL6的一件事是安装程序中的分区对齐以及更改为fdisk以设置柱面边界上的起始扇区.
>确保以当前版本级别运行HP Smart Array控制器和驱动器.此时,将整个服务器更新到current HP Service Pack for ProLiant firmware revision是有意义的.这是一个可引导的DVD,它将升级系统中所有检测到的组件.
>我会检查RAID控制器设置.粘贴hpacucli ctrl的输出都显示配置详细信息. Here’s mine.您希望缓存比率偏向写入与读取. 75:25是常态.对于此应用程序,默认条带大小256K应该没问题.>我可能会在没有LVM的情况下尝试这个.>您的sysctl.conf参数是什么?