AppEngine 的 dev_appserver.py 预热超级慢

AppEngine's dev_appserver.py super slow to warm up

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

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

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

现在,当您 "switch to another project and back to the first one" 时,将重复此过程,从而进行另一次冷启动。

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

Most of the time, a standard application importing a few modules should have a negligible impact on performance. However, when third-party libraries get big enough, we start to see them do weird things with import semantics, which can mess up your boot time significantly.

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

Use warmup requests to avoid request and response latency during the time when your app's code is being loaded to a newly created instance.

更新: dev_appserver 似乎有一个问题影响了它在版本 219.0.1 上的功能。如Issue Tracker:117145272所述:

It turns out a recent change in dev_appserver (released with Cloud SDK 219) makes the start time slow, but only when dev_appserver is used with pydevd in debug mode

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

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

gcloud components update --version 218.0.0

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