我正在加载测试应用程序引擎,所以我将它设置为使用默认类型的一个实例(即B1)。它有256 MB或RAM和600 MHz 1 CPU处理(https://cloud.google.com/appengine/docs/standard).
我有一个nodejs脚本,它运行一个php脚本,在计时器上执行一个MYSQL查找查询。目前,这个计时器每秒检查四次。我想测试它能支持多少用户,所以我将计时器除以不同的数量来模拟用户使用的不同数量的操作。
令我沮丧的是,我发现在5个模拟用户的情况下,实例运行在大约80%的CPU上。这意味着该应用程序每秒运行40次循环,这看起来就像是每秒有40个http请求。我已经读过,F1服务器每秒可以支持7200个请求,该服务器具有与B1服务器相同的规范。这么高的CPU使用率预期和/或我能做些什么来调试它,并可能使它更高效吗?
下面是有关程序流程的更多信息:
child_process运行一个php脚本,该脚本对Cloud服务器执行MySQL查询,以确定是否有任何值得从MySQL数据库收集的更新。(现在我只是测试没有更新,所以在这些测试中跳过了任何额外的查询。)所以,我现在想知道运行php脚本的child_process是否使用了非常多的CPU,因为它似乎是唯一可能使用这么多的东西。欢迎有识之士或建议。
发布于 2020-03-25 09:21:04
我已经读过,F1服务器每秒可以支持7200个请求,该服务器具有与B1服务器相同的规范。这么高的CPU使用率预期和/或我能做些什么来调试它,并可能使它更高效吗?
B1与F1实例不完全相同。诚然,B1和F1共享相同的规范,正如您所说的这里 for B1实例一样,唯一受支持的缩放类型是手动的和基本的。
换句话说,B1实例是使用手动和基本缩放进行缩放的,如果您没有在app.yaml中设置应用程序的期望,这可能会导致问题。
如果您定义了一个低数量的实例,并且您有流量尖峰,那么您将只剩下已经生成的实例,从而导致它们接收所有的通信量,从而有效地提高CPU和内存的使用率。
我的建议是使用支持自动缩放的实例类。自动缩放不仅是很好的,因为您不需要对您的流量设置精确的期望,而且您可以定义一个最小实例数和一个最大实例数,Google将处理与您的流量有关的实例的缩放或缩小。
这实际上有助于减少已经生成的所有实例类的负载,这意味着与手动或基本扩展相比,CPU和内存的使用率更低,总体性能更好。
此外,这里您可以找到关于如何在Google标准中处理请求的文档,以及一些可以利用的技巧和最佳实践,以提高性能和稳定性。
最后,如果您决定使用支持自动缩放的实例类,启用热身请求不仅可以帮助减少延迟,还可以通过在创建新实例类之前加载应用程序的新副本来降低代码的整体性能。这里你会发现更多关于热身请求的信息。
希望能帮上忙。
https://stackoverflow.com/questions/60841828
复制相似问题