MongoDB和ZFS性能不佳:磁盘在执行只写入时总是忙于读取

MongoDB和ZFS性能不佳:磁盘在执行只写入时总是忙于读取
我使用ZFSon linux使用MongoDB(我相信它是mmapped DB)有很大的性能问题.

我们的Mongodb几乎只写.在没有ZFS的副本上,当应用程序每隔30秒写入数据库并且中间没有磁盘活动时,磁盘完全忙于〜5s峰值,因此我将其作为比较的基准行为.
在使用ZFS的副本上,磁盘始终处于完全忙碌状态,副本需要与MongoDB主数据库保持同步.我在所有副本上都启用了lz4压缩,并节省了大量空间,因此磁盘上的数据应该少得多

所以在这些ZFS服务器上,我首先拥有默认的recordsize = 128k.然后我擦除数据并在重新同步Mongo数据之前设置recordsize = 8k.然后我再次擦拭并尝试了recordize = 1k.我还尝试了recordize = 8k而没有校验和

尽管如此,它并没有解决任何问题,磁盘始终保持100%的忙碌状态.
在recordize = 8k的一台服务器上只有一次,磁盘比任何非ZFS副本都忙得多,但在尝试不同的设置并再次尝试使用recordsize = 8k后,磁盘为100%,我无法看到之前的良好行为,并且也无法在任何其他副本上看到它.

此外,应该几乎只有写入,但在不同设置下的所有副本上看到,磁盘完全忙于75%的读取,只有25%的写入

(注意,我相信MongoDB是mmap的数据库.我被告知在AIO模式下尝试MongoDB,但我没有找到如何设置它,并且在运行MySQL InnoDB的另一台服务器上我意识到ZFSonLinux无论如何都不支持AIO.)

我的服务器是CentOS 6.5内核2.6.32-431.5.1.el6.x86_64.
SPL-0.6.2-1.el6.x86_64
ZFS-0.6.2-1.el6.x86_64

#PROD 13:44:55 root@rum-mongo-backup-1:~: zfs listNAME                     USED  AVAIL  REFER  MOUNTPOINTzfs                      216G  1.56T    32K  /zfszfs/mongo_data-rum_a    49.5G  1.56T  49.5G  /zfs/mongo_data-rum_azfs/mongo_data-rum_old   166G  1.56T   166G  /zfs/mongo_data-rum_old#PROD 13:45:20 root@rum-mongo-backup-1:~: zfs list -t snapshotno datasets available#PROD 13:45:29 root@rum-mongo-backup-1:~: zfs list -o atime,devices,compression,copies,dedup,mountpoint,recordsize,casesensitivity,xattr,checksumATIME  DEVICES  COMPRESS  COPIES          DEDUP  MOUNTPOINT               RECSIZE         CASE  XATTR   CHECKSUM  off       on       lz4       1            off  /zfs                        128K    sensitive     sa        off  off       on       lz4       1            off  /zfs/mongo_data-rum_a         8K    sensitive     sa        off  off       on       lz4       1            off  /zfs/mongo_data-rum_old       8K    sensitive     sa        off

可能会发生什么?我应该怎么看出ZFS正在做什么或哪个设置设置不当?

EDIT1:
硬件:这些是租用的服务器,Xeon 1230或1240,16或32GB RAM上的8个vcores,zfs_arc_max = 2147483648,使用HP硬件RAID1.所以ZFS zpool在/ dev / sda2上,并不知道有底层RAID1.即使是ZFS的次优设置,我仍然不明白为什么磁盘在读取时会阻塞,而DB只会写入.
我理解了很多原因,我们不需要在这里再次公开,这是坏的和坏的,…对于ZFS,我很快就会有一个JBOD / NORAID服务器,我可以使用ZFS自己的RAID1进行相同的测试在sda2分区上实现,使用/,/ boot和交换分区使用mdadm执行软件RAID1.

这可能听起来有点疯狂,但我支持另一个受益于ZFS卷管理属性的应用程序,但在本机ZFS文件系统上表现不佳.

我的解决方案?!?

XFS在ZFS zvols之上.

为什么?!?

因为XFS运行良好并且消除了我在本机ZFS中遇到的特定于应用程序的问题. ZFS zvols允许我精简配置卷,添加压缩,启用快照并有效利用存储池.对我的应用程序来说更重要的是,zvol的ARC缓存减少了磁盘上的I / O负载.

看看你是否可以遵循这个输出:

# zpool status  pool: vol0 state: ONLINE  scan: scrub repaired 0 in 0h3m with 0 errors on Sun Mar  2 12:09:15 2014config:        NAME                                            STATE     READ WRITE CKSUM        vol0                                            ONLINE       0     0     0          mirror-0                                      ONLINE       0     0     0            scsi-SATA_OWC_Mercury_AccOW140128AS1243223  ONLINE       0     0     0            scsi-SATA_OWC_Mercury_AccOW140128AS1243264  ONLINE       0     0     0          mirror-1                                      ONLINE       0     0     0            scsi-SATA_OWC_Mercury_AccOW140128AS1243226  ONLINE       0     0     0            scsi-SATA_OWC_Mercury_AccOW140128AS1243185  ONLINE       0     0     0

ZFS zvol,使用以下命令创建:zfs create -o volblocksize = 128K -s -V 800G vol0 / pprovol(请注意,启用了自动快照)

# zfs get all vol0/pprovolNAME          PROPERTY               VALUE                  SOURCEvol0/pprovol  type                   volume                 -vol0/pprovol  creation               Wed Feb 12 14:40 2014  -vol0/pprovol  used                   273G                   -vol0/pprovol  available              155G                   -vol0/pprovol  referenced             146G                   -vol0/pprovol  compressratio          3.68x                  -vol0/pprovol  reservation            none                   defaultvol0/pprovol  volsize                900G                   localvol0/pprovol  volblocksize           128K                   -vol0/pprovol  checksum               on                     defaultvol0/pprovol  compression            lz4                    inherited from vol0vol0/pprovol  readonly               off                    defaultvol0/pprovol  copies                 1                      defaultvol0/pprovol  refreservation         none                   defaultvol0/pprovol  primarycache           all                    defaultvol0/pprovol  secondarycache         all                    defaultvol0/pprovol  usedbysnapshots        127G                   -vol0/pprovol  usedbydataset          146G                   -vol0/pprovol  usedbychildren         0                      -vol0/pprovol  usedbyrefreservation   0                      -vol0/pprovol  logbias                latency                defaultvol0/pprovol  dedup                  off                    defaultvol0/pprovol  mlslabel               none                   defaultvol0/pprovol  sync                   standard               defaultvol0/pprovol  refcompressratio       4.20x                  -vol0/pprovol  written                219M                   -vol0/pprovol  snapdev                hidden                 defaultvol0/pprovol  com.sun:auto-snapshot  true                   local

ZFS zvol块设备的属性. 900GB卷(磁盘上实际大小为143GB):

# fdisk -l /dev/zd0Disk /dev/zd0: 966.4 GB, 966367641600 bytes3 heads, 18 sectors/track, 34952533 cylindersUnits = cylinders of 54 * 512 = 27648 bytesSector size (logical/physical): 512 bytes / 131072 bytesI/O size (minimum/optimal): 131072 bytes / 131072 bytesDisk identifier: 0x48811e83    Device Boot      Start         End      Blocks   Id  System/dev/zd0p1              38    34952534   943717376   83  Linux

ZFS块设备上的XFS信息:

# xfs_info /dev/zd0p1meta-data=/dev/zd0p1             isize=256    agcount=32, agsize=7372768 blks         =                       sectsz=4096  attr=2, projid32bit=0data     =                       bsize=4096   blocks=235928576, imaxpct=25         =                       sunit=32     swidth=32 blksnaming   =version 2              bsize=4096   ascii-ci=0log      =internal               bsize=4096   blocks=65536, version=2         =                       sectsz=4096  sunit=1 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0

XFS挂载选项:

# mount/dev/zd0p1 on /ppro type xfs (rw,noatime,logbufs=8,logbsize=256k,nobarrier)

注意:在某些情况下,我也会在HP Smart Array硬件RAID之上执行此操作.

池创建如下:

zpool create -o ashift=12 -f vol1 wwn-0x600508b1001ce908732af63b45a75a6b

结果如下:

# zpool status  -v  pool: vol1 state: ONLINE  scan: scrub repaired 0 in 0h14m with 0 errors on Wed Feb 26 05:53:51 2014config:        NAME                                      STATE     READ WRITE CKSUM        vol1                                      ONLINE       0     0     0          wwn-0x600508b1001ce908732af63b45a75a6b  ONLINE       0     0     0

推荐阅读

    无法读取U盘中的数据

    无法读取U盘中的数据,,核心提示:我有一个512MB的U盘,把它插在电脑显示器里面是空的,但右键单击以查看已经使用USB 480mb文件的属性未设置为隐

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    优化PostgreSQL中的批量更新性能

    优化PostgreSQL中的批量更新性能,数据,表格,在Ubuntu 12.04上使用PG 9.1. 我们目前需要24小时才能运行大量UPDATE数据库上的语句,其形式

    诺基亚威图性能好到哪里

    诺基亚威图性能好到哪里,诺基亚,手机,诺基亚威图性能好到哪里这是一部以前列出的手机。即使当时配置不高,该品牌的手机也不依赖于该功能吸

    魅蓝note6性能参数有哪些

    魅蓝note6性能参数有哪些,摄像头,蓝牙,魅蓝note6性能参数有哪些魅力蓝色Note6最好拍照。电池寿命更长。蓝色Note6使用高通 snapdragon 625

    电脑硬盘分区重装|电脑重装磁盘分区

    电脑硬盘分区重装|电脑重装磁盘分区,,1. 电脑重装磁盘分区1、新买的原装的电脑,不需要重新分区和装系统,已经是分区装好了系统的。2、如果是

    副本快捷键|复制副本快捷键

    副本快捷键|复制副本快捷键,,复制副本快捷键将文件在PS软件里打开,点击工具箱中的移动工具按钮,选择你将要移动图片的图层,将鼠标移动到移动