在更改我的 linux 服务器后,我在 Flask 中的 Web 应用程序面临缓慢的首字节时间 (TTFB)。问题似乎只在第一次访问或缓存过期(5 分钟)后出现。有时 TTFB 达到 16 秒。
我通过以下方式确认了问题:
- Gunicorn日志(在调试模式下运行并指定所有日志)
- Nginx日志(使用自定义日志
upstream_response_time
和request_time
) - 在开发模式下运行Flask 。
我验证了在同一台服务器上运行的问题不存在(一些毫秒的TTFB),例如:
- Python单行网络服务器
'Hello world'
烧瓶应用
当服务器收到请求时查看htop我发现有时 gunicorn工作人员进入Uninterruptible Sleep (D) State
然后返回。
总而言之,我怀疑这与Flask-Caching包有关,特别是FileSystemCache选项。由于尝试了“SimpleCache”缓存选项,问题就消失了(但缓存并不真正适用于Gunicorn多个工作人员)。
现在我的 app.config 就像下面这样(在另一个 ubuntu-server 上完美地工作):
app.config['CACHE_DIR'] = 'cache'
app.config['CACHE_TYPE'] = 'FileSystemCache'
app.config['CACHE_THRESHOLD'] = 10000
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 300
我希望有人能指出我在这里缺少的东西。