分布式工作进程产生的负载与单个进程产生的负载不同
Load generated by distributed worker processes is not equivalent generated by single process
我开始另一个测试,试图弄清楚用户是如何分配给工作节点的。
这是我的 locust 文件。
@task
def mytask(self):
self.client.get("/")
class QuickstartUser(HttpUser):
wait_time = between(1, 2)
tasks = [mytask]
无非是访问一个从未访问失败的中文搜索引擎网站。
当我在单节点启动30个用户时运行,RPS为20
locust -f try_baidu.py
并获得 运行 状态和结果如下。
我在我电脑的 3 终端使用命令切换到分布式 运行 模式。
locust -f try_baidu.py --master #for master node
locust -f try_baidu.py --worker --master-host=127.0.0.1 #for worker node each
并且我在 locust UI 中输入相同数量的用户和孵化率,比如 30 个用户和孵化率 10。
我的 RPS 是 20 左右,每个工作节点运行 15 个用户。
这解释了 UI 中的用户输入数量是要模拟并分散在工作节点周围的总量。这有点像负载平衡给负载生成带来负担。
但我不知道为什么在单节点(场景 1)和分布式(场景 2)运行 时相同数量的用户给出 2 个不同的 RPS。它们将导致与上述测试相同或封闭的 RPS。
我能看出的唯一区别是上面的比较是在同一台计算机上进行的,而场景 2 在 2 个远程 linux 虚拟机中有工作节点。但这是真正的原因吗?
问题可能问得不是很清楚,我在这里添加一些测试结果,试图描述我在 运行 分布式和单节点与指定用户时的情况。
- 场景一:单节点
- 场景 2:尝试模拟 3 个工作进程,每个进程 运行 30 个用户,但 RPS 甚至更低。
从控制台我可以看到每个工作进程按预期启动了 30 个用户,但不知道为什么 RPS 只有 1/3 或单个节点。
- 场景三:每个worker进程增加三倍用户到90个,单节点RPS与运行几乎相同
看来场景3是我预期的三重模拟量。但是为什么locust图形面板给每个工作进程是运行 90个用户?
- 场景 4:为了确保 locust 真正将指定的用户分配给每个工作节点,我为单个工作节点设置了 30 个用户,并获得与单个节点相同的 RPS(未分配)
我是否必须将分配给工作节点的用户总数加起来并输入这个总数?
通过将主节点设置到另一个系统,问题在一定程度上得到了解决。我想应该有一些东西会干扰主人收集从一名工人发送的请求,这会导致预期 RPS 的一半。这可能会提出一个可能的解决方案,以降低 RPS 低于应有的水平。
我开始另一个测试,试图弄清楚用户是如何分配给工作节点的。
这是我的 locust 文件。
@task
def mytask(self):
self.client.get("/")
class QuickstartUser(HttpUser):
wait_time = between(1, 2)
tasks = [mytask]
无非是访问一个从未访问失败的中文搜索引擎网站。
当我在单节点启动30个用户时运行,RPS为20
locust -f try_baidu.py
并获得 运行 状态和结果如下。
我在我电脑的 3 终端使用命令切换到分布式 运行 模式。
locust -f try_baidu.py --master #for master node
locust -f try_baidu.py --worker --master-host=127.0.0.1 #for worker node each
并且我在 locust UI 中输入相同数量的用户和孵化率,比如 30 个用户和孵化率 10。
我的 RPS 是 20 左右,每个工作节点运行 15 个用户。
这解释了 UI 中的用户输入数量是要模拟并分散在工作节点周围的总量。这有点像负载平衡给负载生成带来负担。
但我不知道为什么在单节点(场景 1)和分布式(场景 2)运行 时相同数量的用户给出 2 个不同的 RPS。它们将导致与上述测试相同或封闭的 RPS。
我能看出的唯一区别是上面的比较是在同一台计算机上进行的,而场景 2 在 2 个远程 linux 虚拟机中有工作节点。但这是真正的原因吗?
问题可能问得不是很清楚,我在这里添加一些测试结果,试图描述我在 运行 分布式和单节点与指定用户时的情况。
- 场景一:单节点
- 场景 2:尝试模拟 3 个工作进程,每个进程 运行 30 个用户,但 RPS 甚至更低。
从控制台我可以看到每个工作进程按预期启动了 30 个用户,但不知道为什么 RPS 只有 1/3 或单个节点。
- 场景三:每个worker进程增加三倍用户到90个,单节点RPS与运行几乎相同
看来场景3是我预期的三重模拟量。但是为什么locust图形面板给每个工作进程是运行 90个用户?
- 场景 4:为了确保 locust 真正将指定的用户分配给每个工作节点,我为单个工作节点设置了 30 个用户,并获得与单个节点相同的 RPS(未分配)
我是否必须将分配给工作节点的用户总数加起来并输入这个总数?
通过将主节点设置到另一个系统,问题在一定程度上得到了解决。我想应该有一些东西会干扰主人收集从一名工人发送的请求,这会导致预期 RPS 的一半。这可能会提出一个可能的解决方案,以降低 RPS 低于应有的水平。