我们有一个在 Google Cloud 上运行的 Web 应用程序。它目前仍在开发中。我们有一个负载均衡器与三个独立的实例组绑定,用于三种不同的功能,它们都在 Tomcat 8 服务器中运行。
其中一个实例组(我将其称为报告组)已运行同一个 WAR 文件几个月了,而我们刚刚在过去一小时内对其进行了更新。
在更新之前,我从未见过报告组超过单个实例。就在更新之前,我查看了该实例上的 Tomcat Manager,它显示了超过一千个活动会话。
更新后,我们进行了测试,然后 POOF,我们有两个实例,查看它们的 Tomcat 管理器,它们每个都显示几百个会话,但总数远低于 1000 个。有一次,当我输入这段话的时候,它短暂地上升到四个实例。
有人可以提供一些关于发生了什么、为什么行为会改变以及负载平衡器和实例组如何决定产生更多实例的见解吗?
以及如何防止这些实例像过度活跃的沙鼠一样大量繁殖?
答案1
如果您使用实例组负载均衡器不会像活泼的沙鼠一样做出任何繁殖决定。要允许在管理中自动缩放实例组您需要配置以下一些策略:
- 平均 CPU 利用率。
- HTTP 负载均衡服务容量,可以基于利用率或每秒请求数。这是使用后端服务使用实例组。
- Stackdriver 监控指标。
检查您的 GCP 项目中负载均衡器和实例组的配置,以了解您配置的策略是什么。
关于 war 文件,如果您在代码文件中进行了修改,新版本可能会比前一个版本使用更多资源。新版本中的会话可能会减少,但 CPU 或内存的使用率可能会更高。如果这是一个自定义 .war 文件,您可以在源代码中检查您所做的更改以及这对您的基础架构有何影响。