k6 VU(虚拟用户)需要多少内存?
How much memory for k6 VU (Virtual User)?
k6 中的 VU(虚拟用户)使用了多少内存?
VU 的内存使用量是否线性扩展,即如果 1 个 VU 使用 X 千字节,100 个 VU 使用 100 * X 千字节?
一个 VU 占用多少内存在很大程度上取决于您的脚本做什么以及(通常更重要的是)它有多少其他文件 imports/parses。由于所有 VU 都有自己的 JS VM,它们是所有需要解析的 JS 文件的单独副本。因此,如果你有一些大的 JS 库,它将在 VU 之间复制,并且可能占你内存使用的大部分。如果您的脚本也有一些包含大量测试数据的大文件 - 它们也会被复制等等。根据我的经验,简单的脚本可以使用低至 1-2mb 或更少,而且我已经看到脚本在一些非常糟糕的情况下高达 40mb,它们导入了一些相当大的 JS 库。
显然您的脚本在执行期间会使用更多内存,但该内存的主要来源将是响应主体,因此我们强烈建议使用 discardResponseBodies(在页面的最底部)来降低内存usage 并且只设置 responseType where/if 你需要 body response.
关于线性 - 一旦开始解析 JS 脚本并且所有 VU 都已初始化,我分析过的每个脚本中的大部分内存或多或少都会流向 VU。他们使用大约相同数量的内存,但是 k6 需要一些内存用于其他用途,具体取决于您使用的内容,应该在 200-300mb 左右。
最终您将不得不测试您的脚本并查看。如果您知道您将要使用某些库,则导入它们而不使用它们,以便对它们进行解析并获得快速估算。您可以 运行 k6 和 --paused --no-teardown --no-setup
仅初始化 VU,而无需再次实际执行任何代码以加快估算速度。我建议提供多少 VU 应该 ran/initialized 和 -u <count>
用于测试。你应该等到它在进度条前显示 paused
,这样一切都已经初始化。
请注意,k6 将使用一些内存来解析您的 JS 并在开始时初始化其他内容,因此您可能应该开始测试至少 50 个 VU,然后向上查看为额外的 VU 添加了多少内存。显然执行最终脚本将使用更多内存,但这对于测量目的应该很有用。
k6 中的 VU(虚拟用户)使用了多少内存?
VU 的内存使用量是否线性扩展,即如果 1 个 VU 使用 X 千字节,100 个 VU 使用 100 * X 千字节?
一个 VU 占用多少内存在很大程度上取决于您的脚本做什么以及(通常更重要的是)它有多少其他文件 imports/parses。由于所有 VU 都有自己的 JS VM,它们是所有需要解析的 JS 文件的单独副本。因此,如果你有一些大的 JS 库,它将在 VU 之间复制,并且可能占你内存使用的大部分。如果您的脚本也有一些包含大量测试数据的大文件 - 它们也会被复制等等。根据我的经验,简单的脚本可以使用低至 1-2mb 或更少,而且我已经看到脚本在一些非常糟糕的情况下高达 40mb,它们导入了一些相当大的 JS 库。
显然您的脚本在执行期间会使用更多内存,但该内存的主要来源将是响应主体,因此我们强烈建议使用 discardResponseBodies(在页面的最底部)来降低内存usage 并且只设置 responseType where/if 你需要 body response.
关于线性 - 一旦开始解析 JS 脚本并且所有 VU 都已初始化,我分析过的每个脚本中的大部分内存或多或少都会流向 VU。他们使用大约相同数量的内存,但是 k6 需要一些内存用于其他用途,具体取决于您使用的内容,应该在 200-300mb 左右。
最终您将不得不测试您的脚本并查看。如果您知道您将要使用某些库,则导入它们而不使用它们,以便对它们进行解析并获得快速估算。您可以 运行 k6 和 --paused --no-teardown --no-setup
仅初始化 VU,而无需再次实际执行任何代码以加快估算速度。我建议提供多少 VU 应该 ran/initialized 和 -u <count>
用于测试。你应该等到它在进度条前显示 paused
,这样一切都已经初始化。
请注意,k6 将使用一些内存来解析您的 JS 并在开始时初始化其他内容,因此您可能应该开始测试至少 50 个 VU,然后向上查看为额外的 VU 添加了多少内存。显然执行最终脚本将使用更多内存,但这对于测量目的应该很有用。