使用部署在Google App Engine flexible上的集群的node.js应用确实可以扩展,但是流量总是发送到一个实例。
该应用程序使用集群模块来利用所有cpus,唯一指定扩展措施的方法是使用cpu_utilisation,因此我们做到了。
缩放达到正常效果后,一旦达到target_utilization,它就会生成另一个实例。
但是问题是,无论有多少实例启动,相同的负载测试都需要完全相同的时间。这仅意味着流量不会在所有实例之间分配。
所以我想知道流量是否总是流向同一实例,是否有任何方法可以证明或改善?
编辑:
负载测试只是常规的负载测试,第一个是20个线程,并在5秒钟内循环4次。
答案 0 :(得分:0)
如果仅在最少实例数的情况下开始测试,并且在进行测试扩展时,测试之间的时间不会改变,因为进行扩展的过程是允许应用程序将请求数量与服务他们所需的资源,避免出现5XX错误。
如果您的测试正在生成衍生实例,则这些实例正在运行,因为如果不生成它们,它们将被杀死,因为它们是不需要的。 扩展所做的事情不是在加快服务时间,而是在任何给定时间点满足X数量的请求所需的资源量,因此应用程序始终可以相同的速度处理请求。
答案 1 :(得分:0)
Buckors关于扩展的解释是正确的,但是,您仍然应该在负载测试中看到改进。检查您的实例实际上正在获得分布式负载的一种快速方法是检查Stackdriver日志。
您可以转到
Stackdriver-> GAE应用程序-[服务名称]
然后您可以查看您的服务正在处理/处理的请求列表。然后,您可以通过位于Cloud Console上 App Engine->实例下的单个App Engine Flex实例ID对其进行过滤,然后看到一个ID,例如“ aef- 服务名称” -alpha数字”
如果您的请求未正确路由,建议您将问题发布到Private Issue上,Google Cloud工程部门应能够在此调查您的项目。