上游响应缓冲到临时文件 /var/cache/nginx/fastcgi_temp
wp-admin/post.php?post=50097&action=edit HTTP/2.0 (wordpress 管理员)
问题:
响应被缓冲到磁盘而不是内存。
/var/缓存/nginx/fastcgi_temp
#soluttion 1:禁用写入磁盘
2. 增加缓冲区但可能不起作用。
禁用写入磁盘
fastcgi_max_temp_file 0;
位置 ~ \.php$ {
了解 nginx 快速 cgi 缓冲区
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_buffer_size 4K;
fastcgi_buffers 64 4k;
Fastcgi buffer会在内存中存储最多4K+64*4K=260K的响应
代理缓冲区 16 16k;
proxy_buffer_size 16k;
写入临时文件由 fastcgi_max_temp_file_size 和 fastcgi_temp_file_write_size 指令控制
fastcgi_buffer_size 4k|8k;
fastcgit 阅读 nginx 的响应的第一部分
nginx 一次可以从服务器接收的数据的最大大小由 fastcgi_buffer_size 指令设置
从 FastCGI 服务器收到的响应的第一部分
对于单个连接,用于从 FastCGI 服务器读取响应的缓冲区的数量和大小。
fastcgi_buffers 8 4k|8k;
对于单个连接,用于从 FastCGI 服务器读取响应的缓冲区的数量和大小。
8*16k=
fastcgi_busy_buffers_size 8k|16k;
fastcgi_buffers 8 4k|8k;
默认情况下,大小受 fastcgi_buffer_size 和 fastcgi_buffers 指令设置的两个缓冲区限制。
fastcgi_max_temp_file_size 1024m;默认
默认:
fastcgi_temp_file_write_size 8k|16k;
限制一次写入临时文件的数据大小
nginx 中的代理缓冲区
适用于单一 repsonef rom fastcgi
proxy_buffer_size 256k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 2048m;
出缓冲区并导致 HTTP 500 错误。在这些情况下,您需要将此缓冲区增加到 8k/16k/32k
mycase: wordpress 后期编辑速度慢,nginx 日志报错。
来自 https://raazkumar.com/tutorials/nginx/nginx-upstream-response-is-buffered-to-a-temporary-file/
上游响应缓冲到临时文件
无标题副本 - 使用 FlexClip 制作日期:2022-08-05
首先为基本运行的 GCE-GKE 部署 Nginx Ingress:等到 Nginx Ingress Controller 被分配了一个外部 IP:配置你的 Ingress Resource 以使用 NGINX Ingress Controller 添加: ,否则它将使用默认的 gce ingress 类。并将集合添加为零以拒绝创建临时文件,这是您的 Ingress 对象的模型: 是将 Ingress 对象分配给 Nginx Ingress 的关键。
上游响应缓冲到临时文件
问题:
我有一个相当大和慢 (复杂的数据,复杂的前端)的 Web 应用程序内置 RoR
并 Puma
作为 反向代理服务。查看 错误日志,我看到很多条目,例如: nginx
nginx
2014/04/08 09:46:08 [warn] 20058#0: *819237 an upstream response is buffered to a temporary file
/var/lib/nginx/proxy/8/47/0000038478 while reading upstream,
client: 5.144.169.242, server: engagement-console.foo.it,
request: "GET /elements/pending?customer_id=2&page=2 HTTP/1.0",
upstream: "http://unix:///home/deployer/apps/conversationflow/shared/sockets/puma.sock:/elements/pending?customer_id=2&page=2",
host: "ec.reputationmonitor.it",
referrer: "http://ec.foo.it/elements/pending?customer_id=2&page=3"
我很好奇,因为对于不同的用户和不同的用户交互,页面不太可能保持相同,而且我不认为在磁盘上缓冲响应是必要的/有用的。
我知道 proxy_max_temp_file_size
并将其设置为 0,但在我看来有点尴尬(我的代理试图缓冲但没有文件缓冲到哪里......怎么可能更快?)。
我的问题是:
如何删除 [warn] 并避免缓冲响应?关掉好 proxy_buffering
还是设置 proxy_max_temp_file_size
为0好?为什么?
如果 nginx
缓冲一个响应:它什么时候提供缓冲的响应,给谁,为什么?
为什么 默认情况下 nginx
打开 proxy_buffering
,然后 [warn] 如果它实际上缓冲了响应,就会向您发出警告?
响应何时触发该选项?何时需要 > 几秒钟(多少?)来响应?这是可配置的吗?
TIA,ngw。
解决方案 1:
如何删除 [warn] 并避免缓冲响应?关闭 proxy_buffering 还是将 proxy_max_temp_file_size 设置为 0 更好?为什么?
您应该设置 proxy_max_temp_file_size
为 0 以将其删除。该 proxy_buffering
指令与警告没有直接关系。您可以将其关闭以完全停止任何缓冲,但通常不建议这样做(除非 Comet 需要)。
如果 nginx 缓冲响应,它何时提供缓冲的响应,向谁提供,为什么?
它立即提供响应,但客户端的连接速度通常要慢得多,并且无法像应用程序生成的响应数据那样快地使用响应数据。Nginx 尝试缓冲整个响应以便尽快发布您的应用程序。
另见:http://aosabook.org/en/nginx.html
为什么 nginx 默认打开 proxy_buffering 然后 [warn] 如果它真的缓冲了响应?
正如我已经提到的, proxy_buffering
与警告没有直接关系。优化代理操作通常需要它,关闭它会降低性能和吞吐量。
Nginx 只会在响应不适合配置的内存缓冲区时发出警告。如果您觉得合适,您可以忽略该警告。
响应何时触发该选项?何时需要超过几秒(多少秒?)来响应?这是可配置的吗?
它在内存缓冲区已满时触发。请查看文档,解释整个机制:http://nginx.org/r/proxy_max_temp_file_size
您可能想要增加内存缓冲区。
解决方案 2:务器上运行良好。
proxy_buffers 16 16k;
proxy_buffer_size 16k;
禁用上游响应缓冲 nginx,改为调整缓冲区以消除警告消息,从而使整个上游响应都可以装入内存。在真正关闭代理缓冲的情况下,您否定了 NGINX,并将其变成比 Apache + PHP-FPM 更糟糕的东西(因为一切都是同步的,而且更慢,......
来自 https://copyprogramming.com/howto/an-upstream-response-is-buffered-to-a-temporary-file