首页 > 解决方案 > AppEngine 的 dev_appserver.py 预热超级慢

问题描述

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

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

标签: google-app-enginedev-appserver

解决方案


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

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

然而,30 秒接缝有点太多了。如果您最近更新了您的应用程序,您可以检查您导入的库,以防其中一个库加载时间过长。您还可以阅读这篇关于 App Engine 启动时间的最佳做法的博文,其中指出:

大多数情况下,导入几个模块的标准应用程序对性能的影响应该可以忽略不计。但是,当第三方库变得足够大时,我们开始看到它们使用导入语义做一些奇怪的事情,这会严重影响您的启动时间。

如果您需要获得更好的性能,可以尝试使用预热请求

在将应用代码加载到新创建的实例时,使用预热请求来避免请求和响应延迟。

更新: dev_appserver 似乎存在问题,影响了它在 219.0.1 版上的功能。如问题跟踪器中所述:117145272

事实证明,dev_appserver(与 Cloud SDK 219 一起发布)的最新更改使启动时间变慢,但仅当 dev_appserver 在调试模式下与 pydevd 一起使用时

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

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

gcloud components update --version 218.0.0

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


推荐阅读