当 nginx proxy_buffer_size 超过时会发生什么?
What happens when nginx proxy_buffer_size is exceeded?
我是 运行 AWS Elastic Beanstalk 中的节点服务器 Docker,它也使用 nginx。我的端点之一负责图像处理,例如调整大小等。
我的日志显示很多 ESOCKETTIMEDOUT
错误,这表明它可能是由无效的 url 引起的。
情况并非如此,因为处理这种情况是相当基本的,当我打开明显无效的 url 时,它会很好地加载图像。
到目前为止,我的研究使我做出了以下改变:
- 将请求模块的超时时间增加到2000
- 将容器 uv_threadpool_size 环境变量设置为最大 128
虽然 1 在一定程度上帮助改善了响应时间,但我没有看到 2 有任何改进。我现在在我的服务器日志中遇到以下警告:
an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/0/12/1234567890 while reading upstream,
.
这让我认为 ESOCKETTIMEDOUT
错误可能是由于超出了 proxy_buffer_size。但是,我不确定,在我继续根据直觉进行更改之前,我想对此发表一些意见。
所以我有两个问题:
- nginx proxy_buffer_size 是否会导致错误 a) 在操作大图像的情况下超出大小或 b) 请求量超出缓冲区大小?
- 更新大小的成本影响是什么(如果有)。 AWS 内存、实例大小等?
我看到了 this 有用的文章,但想了解更多关于这是否对我的情况有帮助的意见。
当超过 proxy_buffer_size
时,它会创建一个临时文件用作一种 "swap",它会占用您的存储空间,如果收费,您的成本将会增加。当您增加 proxy_buffer_size
值时,您将使用更多 RAM,这意味着您将不得不支付更大的费用,或者使用当前的试试运气。
有两件事永远不应该让用户等待处理:e-mails 和图像。它可能导致超时甚至整个应用程序不可用。您始终可以为这些端点使用更大的超时,或者甚至更强大的实例,但是当它扩展时,您将遇到问题。
我建议您采用不同的方法:制作图像占位符响应并异步处理这些图像。当它们作为版本调整大小的图像可用时,您可以正常提供它们。有一个 AWS article 关于使用 lambda 的类似东西。
我是 运行 AWS Elastic Beanstalk 中的节点服务器 Docker,它也使用 nginx。我的端点之一负责图像处理,例如调整大小等。
我的日志显示很多 ESOCKETTIMEDOUT
错误,这表明它可能是由无效的 url 引起的。
情况并非如此,因为处理这种情况是相当基本的,当我打开明显无效的 url 时,它会很好地加载图像。
到目前为止,我的研究使我做出了以下改变:
- 将请求模块的超时时间增加到2000
- 将容器 uv_threadpool_size 环境变量设置为最大 128
虽然 1 在一定程度上帮助改善了响应时间,但我没有看到 2 有任何改进。我现在在我的服务器日志中遇到以下警告:
an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/0/12/1234567890 while reading upstream,
.
这让我认为 ESOCKETTIMEDOUT
错误可能是由于超出了 proxy_buffer_size。但是,我不确定,在我继续根据直觉进行更改之前,我想对此发表一些意见。
所以我有两个问题:
- nginx proxy_buffer_size 是否会导致错误 a) 在操作大图像的情况下超出大小或 b) 请求量超出缓冲区大小?
- 更新大小的成本影响是什么(如果有)。 AWS 内存、实例大小等?
我看到了 this 有用的文章,但想了解更多关于这是否对我的情况有帮助的意见。
当超过 proxy_buffer_size
时,它会创建一个临时文件用作一种 "swap",它会占用您的存储空间,如果收费,您的成本将会增加。当您增加 proxy_buffer_size
值时,您将使用更多 RAM,这意味着您将不得不支付更大的费用,或者使用当前的试试运气。
有两件事永远不应该让用户等待处理:e-mails 和图像。它可能导致超时甚至整个应用程序不可用。您始终可以为这些端点使用更大的超时,或者甚至更强大的实例,但是当它扩展时,您将遇到问题。
我建议您采用不同的方法:制作图像占位符响应并异步处理这些图像。当它们作为版本调整大小的图像可用时,您可以正常提供它们。有一个 AWS article 关于使用 lambda 的类似东西。