我正在使用YCSB对MongoDB进行基准测试,我想与多个用户一起检查其性能。如何模拟并发用户?YCSB 配置文件中的线程数是否表示并发用户?请帮忙
是的,也不是。增加线程数通常会增加应用程序的吞吐量,但吞吐量和用户并发性是两回事。这是因为"思考时间"。当用户访问Web应用程序时,他将需要一定的时间来阅读页面内容并对其进行响应(填写表单,单击链接等)。
确定思考时间以近似并发用户数充其量可能只是一个疯狂的猜测,除非您有可用于确定平均思考时间的现有指标。由于不同页面请求的后端服务时间也可能有很大差异,因此这也变得更加复杂。
您也不能合理地将线程数增加得过高。您需要考虑计算机上可用的内核数。在某个时候,由于上下文切换的成本,增加线程数量的回报将递减。
最好的办法 (IMO) 是首先使用不同数量的线程执行吞吐量测试,以收集吞吐量指标并确定系统中的任何性能瓶颈。如果您只需要粗略计算并发用户,您可能只需推断这些数字即可近似并发用户数。
如果你想执行并发测试,像Apache JMeter这样的工具可能更适合,因为它将允许你构建更复杂的多步骤脚本,其中可以包括思考时间。这将更准确地模拟真实的用户活动。YCSB 是一个非常狭隘的基准测试,无法模拟现实世界的查询和用户行为。
因此,仅举一个示例,您可以配置一个包含 64 个线程的测试,并确定平均吞吐量为每秒 25,000 个事务。如果我们假设用户认为时间为 15 秒,则相当于大约 375,000 个"并发"用户 (25000 * 15)。