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次。

mongoperf用法的更多相关文章

  1. 使用mongoperf评估磁盘随机IO性能

    用法举例: # 16个io线程 # 随机读写10GB的测试文件 echo "{nThreads:16,fileSizeMB:10000,r:true,w:true}" | mong ...

  2. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  3. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  4. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  5. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  6. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  7. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  8. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  9. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

随机推荐

  1. 解决java.lang.InstantiationError: sun.net.ftp.FtpClient

    换用jdk1.6 .如果是放容器里的,也把容器的jdk换成1.6

  2. iOS LaunchImage 各尺寸

  3. ASP.NET MVC cs类中根据Controller和Action生成URL

    var Url = new UrlHelper(HttpContext.Current.Request.RequestContext); Url.Action("AnnounceDetail ...

  4. 【javascript学习——《javascript高级程序设计》笔记】DOM操作

    DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次节点树,允许开发人员添加.移除和修改. 1.节点层次 <html> <head& ...

  5. iOS 从git拷贝Xcode的snippets

    do following things in terminal 1. check out the project using: git clone gitAddress 2. cd the proje ...

  6. Objective-C 中self.与_访问方式的区别

    Objective-C中属性self.a与_a访问的区别: 在OC中我们可以通过指令@property定义属性. OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些. ...

  7. js 字符串中的\n不会换行

    var str1=aaaaaaa\nbbbbbbb; alert(str1); //不换行  ???不知所以然 解决办法: while (str1.indexOf("\\n") & ...

  8. Spark RDD 多文件输入

    1.将多个文本文件读入一个RDD中 SparkConf conf=new SparkConf() .setMaster("local") .setAppName("sav ...

  9. 【BZOJ1503】[HAOI2007]反素数ant 搜索

    结论题...网上讲的好的很多... #include <iostream> using namespace std; ]={,,,,,,,,,},num=; long long ans,n ...

  10. Hello Java

    用记事本或者Eclipse编写如下代码 public class JavaAPP{       public static void main(String[] args){       System ...