更改我的 Linux 服务器后,我在 Flask 中的 Web 应用程序面临缓慢的 第一个字节时间 (TTFB)。该问题仅在第一次访问或缓存过期(5 分钟)后才会出现。有时 TTFB 达到 16 秒。
我通过以下方式确认了问题:
upstream_response_time
和 request_time
)我验证了该问题在运行的同一服务器上不存在(TTFB,某些ms),例如:
'Hello world'
Flask 应用程序当服务器收到请求时,查看 htop,我发现有时 gunicorn 工作人员进入
Uninterruptible Sleep (D) State
然后又回来。
综合起来,我怀疑这与 Flask-Caching 包有关,特别是 FileSystemCache 选项。自从尝试“SimpleCache”缓存选项后,问题就消失了(但缓存实际上不适用于Gunicorn多个工作人员)。
现在我的 app.config 如下所示(在其他 ubuntu 服务器上完美运行):
app.config['CACHE_DIR'] = 'cache'
app.config['CACHE_TYPE'] = 'FileSystemCache'
app.config['CACHE_THRESHOLD'] = 10000
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 300
我希望有人能指出我在这里缺少的东西。
这是一个权限问题。该文件夹不知何故对我的用户有错误的权限,我解决了将缓存目录更改为
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
不再需要 10 秒左右的第一个字节时间 (TTFB)。