欢迎使用优快云-markdown编辑器

本文详细介绍了如何搭建MongoDB的副本集,并通过YCSB进行性能测试。在副本集搭建过程中遇到的问题是由于服务器防火墙导致的,关闭防火墙后成功初始化。接着使用YCSB进行性能测试时,由于路径和类加载问题出现错误,修改后测试正常。在workloada配置文件中调整了相关参数以适应测试需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

副本集的搭建

主要过程参考:
http://blog.youkuaiyun.com/luonanqin/article/details/8497860
使用三台服务器:
* primary
* secondary
* arbiter
当primary挂掉的情况下,secondary会直接被选为primary,primary重新上线之后集群会恢复初始配置。
当secondary或者arbiter挂掉的情况下,无影响
当secondary和arbiter同时挂掉情况下,primary变成secondary

在搭建MongoDB副本集过程出错,出错如下:
rs.initiate(cfg)
{
“ok” : 0,
“errmsg” : “couldn’t initiate : need all members up to initiate, not ok : 128.1.1.65:10001”
}
原因:这台服务器的防火墙打开了,用service iptables stop关闭即可。

使用YCSB进行性能测试

下载最新的YCSB-0.14后,在cygwin下使用maven编译成功,运行:

$ ./bin/ycsb load mongodb
java.lang.NoClassDefFoundError: com/yahoo/ycsb/Client
Caused by: java.lang.ClassNotFoundException: com.yahoo.ycsb.Client
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com.yahoo.ycsb.Client. Program will exit.
Exception in thread “main”

ycsb生成的java命令使用了以/cygdrive/开始的绝对路径,同时jar的分隔符使用的是 “:”所以无法找到相应的类,改成相对路径和分隔符之后

D:\360Downloads\YCSB-master>java -cp ./core/target/core-0.1.4.jar;./mongodb/target/mongodb-binding-0.1.4.jar;./mongodb/target/archive-tmp/mongodb-binding-0.1.4.
jar;./mongodb.properties com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.MongoDbClient -P workloads/workloada -threads 10 -load >test.log

测试正常。

更改配置文件workload/workloada

mongodb.url=mongodb://168.7.1.64:10000
mongodb.database=ycsb
mongodb.writeConcern=normal
recordcount=1000000
operationcount=1000000
workload=com.yahoo.ycsb.workloads.CoreWorkload
readallfields=true
readproportion=0.5
updateproportion=0.5
scanproportion=0
insertproportion=0
requestdistribution=zipfian

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值