【问题标题】:How GAE from Gcp scales regarding the java virtual machine memory usage?Gcp 的 GAE 如何扩展 Java 虚拟机内存使用量?
【发布时间】:2023-03-11 07:54:01
【问题描述】:

我在 gcp 中工作,我们有大量数据,我怀疑我知道 GAE 可以水平扩展创建新的 jvm 实例,并且我认为 Appserver 实例是隔离和独​​立的。没有分布式共享内存或 类似的东西。

但是我正在使用集合来执行一些操作,并且在执行结束时我注意到集合以已处理的记录总数结尾,这很奇怪,因为 jvm 似乎以某种方式共享内存,允许我使用集合来存储所有已处理的记录,并且它们不会为每个 gae(jvm 实例)创建一个新集合。

有什么想法吗?

【问题讨论】:

    标签: java google-app-engine memory google-cloud-platform


    【解决方案1】:

    已实施扩展以使您的应用服务与传入请求保持同步。在任何给定时间,您的应用程序都可以在一个或多个实例上运行,请求分布在所有实例上。在一个实例上没有特殊或特殊的处理,与另一个不同,因为所有这些启动的实例都处理请求。无论需要多少个实例并行运行以跟上流量,您的集合都会被一个也是唯一的应用程序处理。相关详细信息可以在“如何管理实例”文档page 中找到。

    【讨论】:

    • 谢谢,这是一个有趣的答案,对不起,您知道实例如何在它们、对象、堆等之间共享内存。
    • 当您要求分享详细信息时,您考虑的场景是什么?启动新实例以服务流量,因此一个实例处理的请求不会由另一个实例处理,后者负责处理额外的请求。如果实例 1 处理一组与实例 2 不同的请求,则似乎不需要以您考虑的方式共享资源。实例上没有存储任何信息,以使其与其他实例不同。
    • 我只是想了解实例共享集合内存作为仅一个应用程序且 GAE 不会通过实例创建单独集合的过程。
    • 如果您提到 Java 数据对象,持久性是通过 App Engine 数据存储区实现的。以这种方式存储的数据由不同的实例使用对 Datastore 的调用访问,而不是本地共享内存。相关详情可以查看Defining Data Classes with JDO
    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多