【问题标题】:AppEngine's dev_appserver.py super slow to warm upAppEngine 的 dev_appserver.py 预热超级慢
【发布时间】:2019-01-06 02:43:17
【问题描述】:

我在我的 Mac 上更新了 AppEngine(有一段时间没有这样做了)。 dev_appserver 过去几乎可以立即启动(我有一个非常小的网站),但现在需要 30 秒。第一次启动后,如果我将其关闭然后再打开,它会再次快速。但是如果我切换到另一个项目并回到第一个项目,它真的很慢。

我使用--log_level=debug 运行它,但它在挂起时不打印任何内容。知道发生了什么吗?工作的乐趣变成了噩梦。如果您需要任何其他信息,请告诉我(我有一个 python webapp,主要提供静态文件)

【问题讨论】:

    标签: google-app-engine dev-appserver


    【解决方案1】:

    dev_appserver 首次运行时,会部署一个新实例,这需要一些时间,因为它需要进行所有设置和配置。这一次被称为冷启动。

    现在,当您“切换到另一个项目并返回第一个项目”时,会重复此过程,从而再次冷启动。

    然而,30 秒的接缝有点太多了。如果您最近更新了您的应用程序,您可以检查您导入的库,以防其中一个库加载时间过长。您也可以在Best practices for App Engine startup time 上阅读这篇博文,其中指出:

    大多数时候,一个标准应用程序会导入一些模块 对性能的影响应该可以忽略不计。然而,当 第三方库变得足够大,我们开始看到他们做怪事 具有导入语义的东西,这可能会弄乱您的启动时间 显着。

    如果你需要获得更好的性能,可以试试using warmup requests

    使用预热请求来避免请求和 加载应用代码期间的响应延迟 到一个新创建的实例。

    更新: dev_appserver 似乎存在问题,影响了它在 219.0.1 版本上的功能。正如Issue Tracker:117145272中提到的:

    事实证明,dev_appserver 最近发生了变化(与 Cloud SDK 一起发布 219) 使启动时间变慢,但仅在使用 dev_appserver 时 在调试模式下使用 pydevd

    建议将 SDK 升级到 220 版本并安装 grpcio pip install grpcio

    另外,另一种解决方法是使用以下命令将 SDK 版本降级到 228:

    gcloud components update --version 218.0.0
    

    请记住,不建议降级,因为它可能会为安全漏洞打开大门。谨慎使用。

    【讨论】:

    • 谢谢,但是您的计算机需要多长时间才能获得基线?我不导入任何库(我几乎拥有最少的代码来让处理程序调用 jinja 模板)并且不使用数据存储。在我以前的 GAE 版本中,它也曾在大约 1 秒内启动
    • 当您说以前版本的 GAE 时,您是指 GAE 运行时?在本地运行文档[1] 中指出“更新后的 dev_appserver 不支持在 Windows 上开发 Python 3 应用程序”。然而,在其他平台上它仍然是有限的。话虽如此,我已经在一个简单的 hello_world 示例上运行了一些测试,在 Python 3 上运行比在 Python 2 上运行需要更长的时间,因为它必须为新的运行时设置环境。 [1] [cloud.google.com/appengine/docs/standard/python3/…
    • 我在 Mac 上使用 Python 2。运行一个 hello world 需要 1 分 17 秒 :( 你的运行时间是多少?(“运行”是指能够访问 localhost 上的网页)
    • 检查答案,我已经用新信息更新了它。
    • 谢谢,我运行了两个命令,现在又回到了大约 1 秒的启动时间,是的! (我没有尝试在两个命令之间运行,所以不确定哪个命令最有用)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多