如何测量Web应用程序对用户环境产生的负载?

问题描述 投票:0回答:1

我有一个旧的遗留服务,用于对 html5 页面向用户硬件产生的负载进行基准测试。这是一个高级想法:我们希望确保某些特定网页不会冻结用户浏览器和 CPU 负载过重的笔记本电脑。

现在的实现方式:办公室里有一台物理笔记本电脑(原文如此!),里面有 python 脚本,它需要一些 html 文件(为了简化,我们省略文件到达这台笔记本电脑的方式的描述)并打开它在 Google Chrome 中(无头模式),并在 30 秒的时间间隔内每秒进行 100 次 CPU 测量。

测量功能最重要的部分(简体):

for p in psutil.process_iter():
    cpu_percent = p.cpu_percent(interval=collect_stats_interval)

所以关键的想法非常简单:我们有一种“普通”用户的笔记本电脑,我们在这台笔记本电脑上最流行的浏览器中打开一些页面。如果在打开此页面的笔记本电脑上,CPU 负载低于 40%,则意味着在普通用户笔记本电脑上,此页面也会产生几乎相同的负载,这是可以的。

换句话说,如果我们在笔记本电脑上打开这个页面并且没问题,那么用户的笔记本电脑也会没问题。

现在我必须将这段代码移至比办公室笔记本电脑更可靠、更强大的基础设施上。而且,保持测量比例至关重要。 我的意思是,如果某个 html5 页面的基准测试达到 35%,那么在新的基础设施上我们需要近似所有结果。就像“在这台全新的高性能服务器上,此页面的 CPU 使用率为 5%,因此这意味着在简单用户的笔记本电脑上(旧方法)此页面将产生 35% 的 CPU 负载”。

但这是第一个问题:我似乎无法在任何类型的虚拟基础设施中使用这种方法并保持测量稳定。 我尝试在 docker 中运行此服务,尽管有 cpu 限制的所有技巧,但我所得到的只是不稳定且测量范围大:第一次是 20%,而不是 -40%,下一次是 33%。 由于在笔记本电脑上(没有任何虚拟化)该服务运行良好并且始终提供稳定的测量,因此我认为关键问题是虚拟化。

我这么认为,因为没有 docker 的 Ubuntu 专用虚拟机只为我提供了同样不稳定的一组测量结果。

这就是为什么我遇到第二个问题:如果没有稳定的测量,我无法开发一些新旧映射方法。 另外我不擅长系统编程,所以我对CPU负载的概念没有清楚的了解。我的意思是,我必须测量什么才能确保某些软件在某些用户硬件上产生“中等”CPU 负载?也许有一种更好、更可靠的方法来衡量这个指标——也许是 CPU 时间,也许是其他东西。

(最后!)问题是:跨裸机硬件和某些 k8s/虚拟机测量 CPU 负载的最强大、最便携的方法是什么?我必须测量什么以及如何测量?

performance frontend cpu cpu-usage virtualization
1个回答
0
投票

不幸的是,我认为你的观点是对的:

我不能在任何类型的虚拟基础设施中使用这种方法

如果您在虚拟基础架构上运行,则虚拟机管理程序将确定您的测试环境可以使用的 CPU 周期量。从测试系统内部,您既无法得知您消耗的“真实”CPU 周期数,也无法得知系统可能可用的 CPU 资源总数。

也就是说,一般来说,您需要检查提供虚拟基础架构的虚拟机管理程序提供的 CPU 负载测量功能。您的另一个选择是坚持物理基础设施。

(这种情况下的虚拟化适用于虚拟基础设施。如果您在物理基础设施上运行容器,那么负载测量情况将很简单,但我知道这不是您当前的设置。)

© www.soinside.com 2019 - 2024. All rights reserved.