###mongodb数据端:
#数据存放目录
dbpath=/data/mongodb/data
#mongodb程序日志文件
logpath=/data/mongodb/data/mongodb_data.log
#日志形式为追加到文件后
logappend=true
#安静模式,默认:false,即关闭.开启后将产生较少日志量,但不方便排查故障,对数据没有影响.
#quiet=true
#pid存放位置
pidfilepath=/data/mongodb/data/mongo_40001.pid
#访问端口
port=40001
#指定访问地址,3.4之前默认全网,之后则默认是127.0.0.1,但是在3.6之后必须制定这个参数才能启动.配置0.0.0.0代表全网匹配
bind_ip=0.0.0.0
#最大连接数,默认2000,但是考虑到一个shared端会存在多个mongos连接进来的情况,所以就要设置大一些了
maxConns=60000
#开启重做日志记录,相当于redo.log,在数据库故障恢复时使用
journal=true
#mongod进程提交journal日志的时间间隔,即fsync的间隔.默认:100毫秒.此值越小,数据丢失的可能性越低,磁盘消耗越大,性能越低.视实际情况设置.
#journalCommitInterval = 200
#守护进程模式
fork=true
#刷写数据到日志的频率,默认为60秒,设置越小在mongodb故障时,丢失的日志会少一些
#syncdelay=30
#指定存储引擎,3.2之后默认就是wiredTiger,还有MMAPv1(后续将废弃),In-Memory(企业版引擎)
storageEngine=wiredTiger
#wiredTiger引擎可用缓存大小,3.4默认是物理内存50%的量再减去1GB,最少值256MB.这并不代表mongodb占用的总内存量,一般情况下还有其他缓存占用,所以最终会比这个值更高.为了防止内存OOM,应给定一个范围,特别是多实例的机器上.但是单实例的机器上为了充分利用服务器的内存,可以设置成物理内存的70%-80%来使用.要通过mongostat注意实际占用内存不要超过最大物理内存,不然会出现OOM.在3.6版本之后支持在线修改这个参数.
#wiredTigerCacheSizeGB=5
#wiredTiger引擎的collection数据压缩算法,有none(不压缩,读性能更佳).默认值:snappy(中度压缩,性能适中).zlib(高压缩,数据占用空间最少).
#wiredTigerCollectionBlockCompressor=zlib
#wiredTiger引擎最大并发写事务数,默认:128,加大这个参数后,CPU负载较之前会有一定增加,如果是写多读少可以适当配置.
#wiredTigerConcurrentWriteTransactions=512
#操作日志,单位M.一般建议设置5%~10%的可用磁盘空间.一旦创建,你再修改也不会改变,除非删掉再重建,但是oplog并不像binlog会切换,直接删掉的风险比较大(例如导致副本集失效).系统默认将其大小设置为可用disk空间的5%(最小为1G,最大为50G).
oplogSize=10000
#库名和集合的命名空间的大小,单位M,默认16M,一般情况够用,库名和集合的名字特别长的时候才需要改,最大2G.
#nssize=32
#套接字存放位置
unixSocketPrefix=/tmp
#指定一个数据库一个文件夹,必须在初始化前配置,在已有数据库上新增这个参数会报错
directoryperdb=true
#将索引也指定一个数据库一个文件夹,不和数据放一起.
wiredTigerDirectoryForIndexes=true
#开启慢查询分析功能,0:关闭,不收集任何数据.1:收集慢查询数据,默认是100毫秒.2:收集所有数据
profile=1
#慢查询的时间,单位ms,超过这个时间将被记录,默认是100毫秒
slowms=500
#使用较小的默认文件.默认为false,不使用.如果开启,当数据库很大,会导致mongodb创建很多文件,影响性能.
#smallfiles=true
#预分配方式,默认false.预分配方式保证了写入性能的稳定,每个预分配的文件都用0(零)进行填充.会让MongoDB始终保持额外的空间和空余的数据文件,从而避免了数据增长过快而带来的分配磁盘空间引起的阻塞.设置 true来禁用预分配的数据文件,会缩短启动时间,但在正常操作过程中,可能会导致性能显著下降.
#noprealloc=true
#开启认证模式,第一次需要通过登录127.0.0.1地址创建用户名密码后再登录才可以操作,不然能登录数据库但是不能操作任何东西
#auth=true
#开启本地认证机制,和auth参数配合使用.默认:1,即开启.对于分片集群,可以选择性的在mongos上开启,在shard节点的mongod上关闭.
#setParameter=enableLocalhostAuthBypass=1
#关闭认证模式,和上面的冲突
noauth=true
#指定集群认证文件,开启认证的集群一定要指定这个文件,不然集群内部无法通信.不是集群的情况或者没开认证可以不用指定,注释关闭即可,keyfile需要用openssl来生成.
#keyFile=/usr/local/mongodb/keyfile
#标识这台mongodb数据库为分片集群使用
#shardsvr=true
#副本集名称,如果是单台使用则不设置,开启后不初始化配置集群就不能使用
#replSet=shard1
#禁止HTTP状态接口,3.6后不用
nohttpinterface=true
#禁止REST接口-在生产环境下建议不要启用MongoDB的REST接口,3.6后不用
rest=false
#打开web监控,和上面相反,不建议开
#httpinterface=true
#rest=true
#mongodb3.6新参数,可以减少每次新连接时创建与销毁线程的资源消耗.预先创建一定数量的线程(默认CPU核数/2个,由参数adaptiveServiceExecutorReservedThreads控制),当新的连接进来时,线程池内分配一个空闲woker线程,如果无空闲线程时,则会创建新的worker线程.当worker线程在一个执行内周期结束时,检测到真正执行IO操作的时间小于adaptiveServiceExecutorIdlePctThreshold比例时,即线程池worker线程空闲时间的百分比,小于该百分比时自动销毁.相关参数无特殊需求默认即可.
#serviceExecutor=adaptive
#动态修改触发刷新脏页的条件和方法,适当调整能减少IO和并发冲突等资源占用
#db.adminCommand({setParameter:1,wiredTigerEngineRuntimeConfig:"cache_size=5G,eviction_target=80,eviction_trigger=95,eviction_dirty_target=5,eviction_dirty_trigger=20,eviction=(threads_min=4,threads_max=4),checkpoint=(wait=60,log_size=1GB)"})

###mongos端:
#日志文件地址
logpath=/data/mongodb/mongodb_route.log
#日志追加模式
logappend=true
#端口
port=30000
#绑定ip,可以限制IP登录,例如bind_ip=10.21.1.208,3.2默认是允许所有ip登入,之后是允许127.0.0.1,只有配置0.0.0.0才是允许所有
bind_ip=0.0.0.0
#最大连接数
maxConns=50000
pidfilepath=/data/mongodb/mongo_30000.pid
#指定集群认证文件,开启认证的集群一定要指定这个文件,不然集群内部无法通信.不是集群的情况或者没开认证可以不用指定,注释关闭即可,keyfile需要用openssl来生成.
keyFile=/usr/local/mongodb/keyfile
#指定config端地址,使用127.0.0.1会报错,3.4后config必须是集群,还必须在地址前面带上副本集名称,3.0和3.2可以单点,例如:configdb=172.25.33.98:20000,但是会有警告,配置多台就成为互为镜像模式.
configdb=configs/172.25.33.98:20000,172.25.33.99:20000,172.25.33.101:20000
#守护进程模式 
fork=true
#mongodb分片集群默认一个数据块大小是64M,mongos会将一个或多个文档存在里面,然后把这些数据块平均地分布在各个分片节点上,可以设置在1M到1024M之间.设置更大或更小都各有优势,可以按需求自定义.
#chunkSize=128
#mongodb3.6新参数,可以减少每次新连接时创建与销毁线程的资源消耗.预先创建一定数量的线程(默认CPU核数/2个,由参数adaptiveServiceExecutorReservedThreads控制),当新的连接进来时,线程池内分配一个空闲woker线程,如果无空闲线程时,则会创建新的worker线程.当worker线程在一个执行内周期结束时,检测到真正执行IO操作的时间小于adaptiveServiceExecutorIdlePctThreshold比例时,即线程池worker线程空闲时间的百分比,小于该百分比时自动销毁.相关参数无特殊需求默认即可.
#serviceExecutor=adaptive

###mongodb config端:
#数据目录,目录名字区分于数据节点
dbpath=/data/mongodb/config/
#mongodb程序日志文件
logpath=/data/mongodb/mongodb_config.log
#日志形式为追加到文件后
logappend=true
#安静模式,默认:false,即关闭.开启后将产生较少日志量,但不方便排查故障,对数据没有影响.
quiet=true
#pid存放位置
pidfilepath=/data/mongodb/mongo_20000.pid
#访问端口
port=20000
#指定访问地址,3.4之前默认全网,之后则默认是127.0.0.1,但是在3.6之后必须制定这个参数才能启动.配置0.0.0.0代表全网匹配
bind_ip=0.0.0.0
#最大连接数,默认2000,一般来说config不会很多连接,但是设置大一些可以避免真的这么多连接时的问题.
maxConns=20000
#开启重做日志记录,相当于redo.log,在数据库故障恢复时使用
journal=true
#mongod进程提交journal日志的时间间隔,即fsync的间隔.默认:100毫秒.此值越小,数据丢失的可能性越低,磁盘消耗越大,性能越低.视实际情况设置.
#journalCommitInterval=200
#守护进程模式
fork=true
#刷写数据到日志的频率,默认为60秒,设置少一些,在mongodb故障时,丢失的日志会少一些
#syncdelay=30
#指定存储引擎,3.2之后默认就是wiredTiger,还有MMAPv1(后续将废弃),In-Memory(企业版引擎)
#storageEngine=wiredTiger
#wiredTiger引擎可用缓存大小,3.4默认是物理内存50%的量再减去1GB,最少值256MB.和share端不一样,config端一般用的不多,直接默认问题不大.
#wiredTigerCacheSizeGB=5
#wiredTiger引擎的collection数据压缩算法,有none(不压缩,占用空间多,读性能更佳).默认值snappy(中度压缩,占用空间和性能都适中).zlib(高压缩,数据占用空间最少,性能最差).
#wiredTigerCollectionBlockCompressor=zlib
#操作日志,单位M,一般来说config刷写频率很低,但是还是建议设置1G以上,避免有坑.
oplogSize=1000
#库名和集合的命名空间的大小,单位M,默认16M,一般情况够用,库名和集合的名字特别长的时候才需要改,最大2G.
#nssize=16
#套接字存放位置
unixSocketPrefix=/tmp
#指定一个数据库一个文件夹,必须在初始化前配置,在已有数据库上新增这个参数会报错
directoryperdb=true
#将索引也指定一个数据库一个文件夹,不和数据放一起.
wiredTigerDirectoryForIndexes=true
#关闭认证模式,config端可以不需要,也视乎你的需求
noauth=true
#是否config端,这里当然是了
configsvr=true
#副本集名称,3.4之前可以不做集群,之后都需要设置config集群才可以使用
replSet=configs
#禁止HTTP状态接口,3.6后不用
nohttpinterface=true
#禁止REST接口-在生产环境下建议不要启用MongoDB的REST接口,,3.6后不用
rest=false
#使用较小的文件存储.默认为false,不使用.如果开启,当数据库很大,会导致mongodb创建很多文件,影响性能.但是config的数据相对较少,可以开启.
smallfiles=true
#预分配方式,默认false.预分配方式保证了写入性能的稳定,每个预分配的文件都用0进行填充.会让MongoDB始终保持额外的空间和空余的数据文件,从而避免了数据增长过快而带来的分配磁盘空间引起的阻塞.设置 true来禁用预分配的数据文件,会缩短启动时间,但在正常操作过程中,可能会导致性能显著下降.
#noprealloc=true
#开启认证模式,需要创建用户名密码,不然能登录数据库但是不能操作
#auth=true
#开启本地认证机制,和auth参数配合使用.默认:1,即开启.对于分片集群,可以选择性的在mongos上开启,在shard节点的mongod上关闭.
#setParameter=enableLocalhostAuthBypass=1
#指定集群认证文件,没开认证就不用指定,注释关闭即可,需要用openssl来生成
#keyFile=/usr/local/mongodb/keyfile

###ycsb压测配置文件:
#YCSB load(加载元数据)命令的参数,表示加载的记录条数,也就是可用于测试的总记录数.
recordcount=1000000
#YCSB run(运行压力测试)命令的参数,测试的总次数.和maxexecutiontime参数有冲突,谁先完成就中断测试退出,结合下面的增改读扫参数,按比例来操作.
#operationcount=1000000
#测试的总时长,单位为秒,和operationcount参数有冲突,谁先完成就中断测试退出,这里3600秒就代表一小时,也是结合下面的增改读扫参数,按比例来操作.
maxexecutiontime=3600
#java相关参数,指定了workload的实现类为 com.yahoo.ycsb.workloads.CoreWorkload
workload=com.yahoo.ycsb.workloads.CoreWorkload
#表示查询时是否读取记录的所有字段
readallfields=true
#表示读操作的比例,该场景为0.54,即54%
readproportion=0.54
#表示更新操作的比例,该场景为0.2,即20%
updateproportion=0.2
#表示扫描操作的比例,即1%,通常是用来模拟没有索引的查询
scanproportion=0.01
#表示插入操作的比例,即25%
insertproportion=0.25
#表示请求的分布模式,YCSB提供uniform(随机均衡读写),zipfian(偏重读写少量热数据),latest(偏重读写最新数据)三种分布模式
requestdistribution=uniform
#插入文档的顺序方式:哈希(hashed)/随机 (insertorder)
insertorder=hashed
#测试数据的每一个字段的长度,单位字节
fieldlength=2000
#测试数据的每条记录的字段数,也就是说一条记录的总长度是2000*10=20000字节
fieldcount=10
#连接地址,支持多mongos
mongodb.url=mongodb://172.25.31.101:30000,172.25.31.102:30000,172.25.31.103:30000/ycsb?w=0
#写安全设置,Unacknowledged(不返回用户是否写入成功{w:0}),Acknowledged(写入到主节点内存就返回写入成功{w:1}),Journaled(写入到主节点journal log才返回写入成功{w:1,j:true}),Replica Acknowledged(写入到所有副本集内存和主节点journal log才返回写入成功{w:2}),Available Write Concern(写入到所有节点journal log才返回写入成功{w:2,j:true}),选项越往后,安全性越高,但是性能越差.
mongodb.writeConcern=acknowledged
#并发数
threadcount=100