【发布时间】:2020-03-25 01:31:29
【问题描述】:
我正在对应用程序引擎进行负载测试,因此我将其设置为使用默认类型的一个实例(即B1)。它有 256 MB 或 RAM 和 600 MHz 1 CPU 处理 (https://cloud.google.com/appengine/docs/standard)。
我有一个 nodejs 脚本,它运行一个在计时器上执行 1 次 MYSQL 查找查询的 php 脚本。目前,此计时器每秒检查四次。我想测试它可以支持多少用户,所以我将计时器除以不同的数量来模拟不同数量的用户会使用多少操作。
令我沮丧的是,我发现对于 5 个模拟用户,该实例以大约 80% 的 CPU 运行。这意味着应用程序每秒运行循环 40 次,这看起来就像每秒有 40 个 http 请求。我读过一个F1 服务器每秒可以支持7200 个请求,它与B1 服务器具有相同的规格。这是预期的高 CPU 使用率和/或我可以做些什么来调试它并可能使其更高效?
这里有更多关于程序流程的信息:
-
用户连接 socket.io 并加入房间
-
服务器在每秒运行 4 次的计时器上运行脚本。
-
该脚本使用
child_process运行一个php 脚本,该脚本对云SQL 服务器执行MySQL 查询,以确定是否有任何值得从MySQL 数据库收集的更新。 (现在我只是在测试没有任何更新,所以在这些测试中会跳过运行任何额外的查询。) -
php脚本向服务器返回JSON数据,服务器看到没有什么可做的了。
通常脚本只会针对每种房间类型运行一次(无论用户数量如何),但为了测试服务器可以处理多少处理,我将计时器持续时间除以不同的数量,发现在频率的 5 倍时,服务器以 80% 的 CPU 运行。这在技术上暗示的是,如果不断有 4 条新消息,则 CPU 使用率预计约为 80%。这对我来说似乎很高。
所以,我现在想知道运行 php 脚本的 child_process 是否正在使用大量 CPU,因为它似乎是唯一可能使用这么多 CPU 的东西。欢迎提供见解或建议。
【问题讨论】:
标签: php node.js google-app-engine child-process