AppEngine的dev_appserver.py超级慢地预热

时间:2019-01-06 02:43:17

标签: google-app-engine dev-appserver

我在Mac上更新了AppEngine(有一段时间没有更新)。 dev_appserver过去几乎是立即启动(我的网站很小),但现在需要30秒。第一次启动后,如果我先关闭然后再打开,它又很快。但是,如果我切换到另一个项目并回到第一个项目,那确实很慢。

我用--log_level=debug运行了它,但是它挂起时没有打印任何内容。知道发生了什么吗?与之共事的快乐变成了一场噩梦。让我知道您是否需要任何其他信息(我有一个python webapp,主要提供静态文件)

1 个答案:

答案 0 :(得分: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

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