mongoperf是mongoDB自带工具,用于评估磁盘随机IO性能。
使用方法
作用:用于部署前,评估mongodb所在存储的IO性能
用法:mongoperf <conffile
,从配置文件conffile
中读取参数。
配置文件是Json
格式,包含如下参数:
{
nThreads:<n>,
fileSizeMB:<n>,
sleepMicros:<n>,
mmf:<bool>,
r:<bool>,
w:<bool>,
recSizeKB:<n>,
syncDelay:<n>
}
参数说明:
nThreads
表示IO线程数<n>
,默认值是1。为了测试时达到系统最佳性能,推荐设置为16
,也可以更大(参考系统配置)。
fileSizeMB
表示测试文件的大小,单位是MB
,默认是1MB
。
sleepMicros
默认值是0
,sleepMicros/nThreads
表示每次操作的间隔(sleep)时间。
mmf
默认值是false
。
设置为false
时,用direct IO
模式,每次直接写物理磁盘,不会有缓存和合并效果。
可用于测试大文件的随机IO性能。
设置为true
时,写到内存映射文件,一般用于测试系统缓存性能。
- r
默认值是false
。设置为true
时,表示有read
操作。
- w
默认值是false
。设置为true
时,表示有write
操作。
recSizeKB
默认值是4kb
,表示每次写入的数据块大小。
syncDelay
默认值是0
,表示不生效。
设置为非0
值时,仅当mmf
设置为true
时才生效。表示数据从内存刷到磁盘的时间间隔。如果有内存缓存,mongod
默认60s间隔将缓存刷到磁盘。
用法举例:
# 16个io线程
# 随机读写10GB的测试文件
echo "{nThreads:16,fileSizeMB:10000,r:true,w:true}" | mongoperf
执行结果:
# 先创建10GB的测试文件
9GB...
testing...
...
# IO跑满后,得出ops和吞吐量
new thread, total running : 16
read:1 write:1
7670 ops/sec 29 MB/sec
# 可以使用iostat观察磁盘io状态
iostat -xmt 1
参考意义:
用于评估mongodb的性能上限。
执行echo "{nThreads:16,fileSizeMB:10000,w:true}" | mongoperf
结果:
5205 ops/sec 20 MB/sec
可以预估在该系统下,16
线程每秒可成功操作5205
次。