背景和意义
目前团队对图搜业务使用的服务器的磁盘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性能基线标准。