【问题标题】:Is Google App Engine tmp folder isolated per instance? [closed]每个实例是否隔离了 Google App Engine tmp 文件夹? [关闭]
【发布时间】:2018-11-19 13:16:03
【问题描述】:

关于 App Engine 可用于写入文件的 /tmp/ 文件夹的信息非常少。 https://cloud.google.com/appengine/docs/standard/java/runtime-java8#Java_The_sandbox

主要问题是这是否每个实例都是隔离的?如果一个实例保存了一个文件,启动了一个推送队列,那么推送队列是否会被同一个实例运行并且能够读取该文件?

谢谢

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    /tmp 目录实际上存在于内存中,因此它是每个 GAE 实例的本地目录。从您引用的文档中:

    /tmp 中的文件将消耗分配给您的实例的内存。

    通常,不能保证推送队列任务的执行发生在将任务入队的同一实例上。

    这种保证只能存在于一种非常具体而非典型的情况下:您使用手动扩展,只运行一个实例,并且该实例将任务排入队列并(稍后)处理它。

    【讨论】:

    • 可以确认,当记录实例 ID (ModulesServiceFactory.getModulesService().getCurrentInstanceId()) 时,有时会有一个不同的实例用于在请求时写入文件并在推送队列中读取文件。但这仅在 App Engine 中存在大文件时才会发生,而不是较小文件或本地文件。似乎第一个实例正忙于写入文件,而第二个实例正在同时启动推送队列。
    • 如果您有多个实例正在运行,或者您的任务被延迟/延迟足够长的时间以使排队的实例消失,您可能会更频繁地遇到这种情况
    猜你喜欢
    • 2011-07-17
    • 2012-12-31
    • 1970-01-01
    • 2013-11-18
    • 2014-04-16
    • 1970-01-01
    • 2021-03-20
    • 2013-05-15
    • 2020-11-24
    相关资源
    最近更新 更多