0

在更改我的 linux 服务器后,我在 Flask 中的 Web 应用程序面临缓慢的首字节时间 (TTFB)。问题似乎只在第一次访问或缓存过期(5 分钟)后出现。有时 TTFB 达到 16 秒。

我通过以下方式确认了问题:

  1. Gunicorn日志(在调试模式下运行并指定所有日志)
  2. Nginx日志(使用自定义日志upstream_response_timerequest_time
  3. 在开发模式下运行Flask 。

我验证了在同一台服务器上运行的问题不存在(一些毫秒的TTFB),例如:

  1. Python单行网络服务器
  2. '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

我希望有人能指出我在这里缺少的东西。

4

1 回答 1

0

我仍然没有确定的答案。我仍然在发布有效的方法,以防万一对其他人有用。

不知何故,它似​​乎是一个权限问题,所以我将缓存目录更改为tmp,我的配置变为:

app.config['CACHE_DIR'] = '/tmp/my_site_cache/' 
app.config['CACHE_TYPE'] = 'FileSystemCache' 
app.config['CACHE_THRESHOLD'] = 10000
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 300

到目前为止,第一个字节的时间 (TTFB) 没有超过 10 秒左右。

于 2022-01-24T17:12:00.493 回答