改善在Python 3.7标准环境下运行Django的Google应用程序引擎的冷启动时间
我正在运行一个基于Django的web应用程序,它是在Python 3.7标准环境下的Google app Engine上运行的。使用应用程序时,请求通常需要500毫秒左右,这是完全可以接受的。然而,当应用程序有一段时间(几分钟)未被访问时,日志显示Google应用程序引擎实例已关闭,下一个请求需要再次加载gunicorn,大约需要20秒 显然,我不能让用户在页面加载前等待20秒。在本地设置上进行测试时,服务器需要几秒钟来加载环境变量,然后调试服务器几乎立即加载 我认为我的代码没有问题,因为一旦“冷启动”发生,一切都运行得很快,所以请求并不是在等待数据库读取之类的 有哪些选项可以优化Google App Engine上的django冷启动 到目前为止,我已经将实例类增加到F4,并根据指定了gunicorn workers的数量。理论上我可以使用F4_1G,但这是可用的最高实例,而且它似乎没有解决冷启动问题 我能想到的另一件事是,在我的app.yaml中,我设置了32个环境变量(主要是API凭据),这可能会减慢实例的启动速度。这可能是启动时间过长的主要原因吗?如果是这样的话,是否有一种安全的替代方案,可以在不使用环境变量的情况下向Django提供API凭据改善在Python 3.7标准环境下运行Django的Google应用程序引擎的冷启动时间,python,django,python-3.x,google-app-engine,gunicorn,Python,Django,Python 3.x,Google App Engine,Gunicorn,我正在运行一个基于Django的web应用程序,它是在Python 3.7标准环境下的Google app Engine上运行的。使用应用程序时,请求通常需要500毫秒左右,这是完全可以接受的。然而,当应用程序有一段时间(几分钟)未被访问时,日志显示Google应用程序引擎实例已关闭,下一个请求需要再次加载gunicorn,大约需要20秒 显然,我不能让用户在页面加载前等待20秒。在本地设置上进行测试时,服务器需要几秒钟来加载环境变量,然后调试服务器几乎立即加载 我认为我的代码没有问题,因为一旦
谢谢您比较GAE和本地计算机上的性能实际上并不相关,请参阅 你在本地看到的那几秒钟不仅仅是加载本地变量(如果你不确信,你可以测量并在日志消息中显示),大部分时间都是用来导入所有需要的库和设置django框架(也许还有你的应用程序的其他东西),您需要对其进行分析,以准确地了解正在发生的事情,并确定可以采取哪些措施来显著改进它 降低冷启动时间影响的典型方法有:
- -始终运行一个最小实例
- (但它们不是100%有效)
app.yaml
的配置中将min\u idle\u实例设置为1(并启用预热请求)。您将为一个实际上不会提供大量流量的实例付费,但如果它解决了启动时间问题,您可能可以降低实例类型以进行补偿。