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