ngnix 和避免惊群效应

ngnix 和避免惊群效应

我有一个设置,其中 nginx 将try_files在 nedia 目录中提供静态图像文件。

如果找不到,将调用后端,从 s3 中提取文件,创建一些 DB 条目,然后将文件复制到媒体目录,以便 nginx 为该媒体文件的进一步调用提供服务。

生成文件可能需要 5 秒。

当有 X 个新请求针对此文件并且尚未生成时,后端将被调用 X 次而不是一次。我如何避免此问题并保留所有请求直到文件准备好?

答案1

创建某种锁定机制,通知其他实例/线程此文件当前正在处理并且应该等待。最简单的解决方案是在临时目录中写出一个具有所需名称的文件,然后让脚本检查它是否存在,如果存在则进入等待模式。

相关内容