Open yongs2018 opened 5 years ago
你的程序可以并发的调用m_poPaxosNode->Propose这个接口吗,也就是说你处理外部请求的server必须是多线程或者多进程模式? 另外你为啥要调用SetMaxHoldThreads这个接口
多谢大神的解答, 对于多个group 的问题,我已经知道如何解决了。
------------------ 原始邮件 ------------------ 发件人: "jettchen00"<notifications@github.com>; 发送时间: 2020年3月23日(星期一) 上午10:36 收件人: "Tencent/phxpaxos"<phxpaxos@noreply.github.com>; 抄送: "316871816"<316871816@qq.com>; "Author"<author@noreply.github.com>; 主题: Re: [Tencent/phxpaxos] 关于如何运行多个Group 提升性能 (#171)
你的程序可以并发的调用m_poPaxosNode->Propose这个接口吗,也就是说你处理外部请求的server必须是多线程或者多进程模式? 另外你为啥要调用SetMaxHoldThreads这个接口
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
腾讯的大神好,请教一个问题 文档描述: 设置oOptions.iGroupCount为1,标识我们想同时运行多少个PhxPaxos实例。我们通过GroupIdx来标识实例, 其范围为[0,oOptions.iGroupCount),我们支持并行运行多个实例,每个实例独立运作。不同实例直接无任何关联, 支持多实例的目的仅仅是为了让它们可以共享同一个IP/PORT。
我的目的:是运行多个Group 提高系统性能 我的问题:我写了一个启动多个group 的程序, 但是性能结果并没有提高,反而下降. 我的环境:4核心 8G内存, 一台物理机上部署了3个进程. 每个进程有(1,n) 个group, 一个group 有(1, N) 个状态机. 一个进程里线程个数和group 数字相同
初始化:大概如下
int PhxEngine::RunPaxos() { 。。。。。,, 。。。。。 //添加group for( int i = 0 ; i < gsum ; i++) { GroupSMInfo oSMInfo; oSMInfo.iGroupIdx = i; if( i == 0 ) { oSMInfo.bIsUseMaster = true; } for( int i = 1 ; i <= max ; i++) { OrderSync* tmp = new OrderSync; tmp->id = i; //每个group 添加状态机 oSMInfo.vecSMList.push_back(tmp); } //添加group oOptions.vecGroupSMInfoList.push_back(oSMInfo); } oOptions.pMasterChangeCallback = &PhxEngine::OnMasterChange; 。。。。。
}
发其调用, 思路是,随机的分配到每一个group ,随机的使用每个group 里面状态机, 进行提交。 最后统计提交总是和成功总数. 按成功总是计算tps { string oid = buffer; total++; long long rm = tars::TC_Common::now2us(); srandom(rm); int gid = random()%gsum; int matchid ; matchid = random()%max + 1; SMCtx oCtx; OrderSMCtx tx; oCtx.m_pCtx = (void *)&tx; oCtx.m_iSMID = matchid;
}
我的结论: 多个group 反而性能没有什么提升。测试性能 total = 13880 succ=13876 tps=1387 大概1387 左右。 如果每个进程都发起提按,性能在500 左右,错误码爆 -14
我如何实现多个group 导致性能提升呢? 我该怎么做? 你们是怎么做的!!!!拜托了,大神