图搜引擎服务器磁盘IO性能测试方案

背景和意义

目前团队对图搜业务使用的服务器的磁盘IO性能没有量化的数据,不能准确把握服务器的磁盘IO性能。

同机型机器的磁盘IO性能表现并不相同,在磁盘IO性能表现差的机器,往往存在故障隐患。

因为不能准确把握服务器的IO性能,对图搜引擎能否支持多少业务量时,不能做出准确评估。在运维团队系统的过程中,会存在不可预知的风险,最终导致系统故障。

机器预算收紧,把索引全部加载到内存的方案暂时无法推行,在图搜引擎检索过程中引依然有磁盘IO操作。对磁盘IO测试仍有重要意义。

测试目标

  • 测试现有机型机器的磁盘IO性能(日常、极限)。
  • 对测试新型存储介质的性能,建立测试方法。
  • 针对图搜业务,建立服务器磁盘IO性能基线标准。

有了磁盘IO性能基线标准,有如下好处:

  • 在系统扩容的过程中,对加入集群的新机器,做磁盘IO性能准入测试,降低线上环境的硬件故障发生率。
  • 以后引入新型服务器,在评估其性能时,做对比和参照。
  • 在搭建新的图搜服务,预估系统可承受的最大业务量时,可以做为参考依据。

测试方法

测试方法分析

图搜搜索引擎磁盘IO读写特点

对于图搜搜索引擎,主要有三种IO操作,分别是随机读、顺序写和顺序读。

  • 随机读

图搜引擎在提供线上服务时,磁盘IO操作主要来自于读取磁盘中存储的正排字段, 随机存储于正排索引文件当中。

  • 顺序写和顺序读

顺序写和顺序读,分别为索引同步和索引加载这两个过程中的磁盘IO读写特点,频率为1天各执行1次。

索引文件打开方式主要为mmap

测试注意点

针对图搜引擎操作磁盘时的IO特点,在做磁盘IO性能测试时需要注意下面几点:

  • 测试随机读、顺序写和顺序读三种读写情况,重点是测试随机读的磁盘IO性能。

  • 随机读测试中,文件大小要到500G,并做96路并发测试。每次读写块的大小为4k

  • 要使用mmap方式打开文件。

  • 在测试的过程中,要排除linux cache机制的影响,只对磁盘IO性能进行测试。

测试指标

重点关注在3种磁盘读写方式(随机读、顺序写和顺序读)下的IO指标:

名称备注
BW平均IO带宽
IOPSInput/Output Operations Per Secondlatency响应时间complete latency完成延迟
CPU CPU使用率

测试工具

FIO 2.1.10
top/vmstat

测试步骤

测试步骤注意要点

  • 相同的测试必须测试3遍,并记录下每次的测试结果数据。
  • 每组性能测试的时间不能少于60秒。
  • 测试前检查服务器上的应用进程,关闭无关进程,减少无关影响。

具体测试步骤

以测试服务器 x.x.x.x 的磁盘IO性能为例:

  • 关闭所有无关进程。
  • 下载编译和安装FIO。
  • 编写fio job文件
  • 此fio job文件,包含3个job,分别是随机读、顺序读、顺序写。
  • 执行测试命令
    ./fio fio_jobs.ini

测试结果如下:

  • 解读并记录测试结果。
  • 测试结果分析方法
  • 对照手册,解读FIO的测试结果。

    如何建立图搜引擎服务器磁盘IO性能基线标准

对目前拍立淘图搜引擎使用的机型,依据本文的方法做性能测试。并统计磁盘IO性能测试结果。

对各个机器磁盘IO性能测试结果中,剔除误差数据,取中位统计结果做平均值为IO性能基线标准。

参考资料

发表评论

电子邮件地址不会被公开。 必填项已用*标注