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