JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Nginx错误,a client request body is buffered to a temporary file

wys521 2024-10-15 15:29:36 精选教程 37 ℃ 0 评论

最近在使用Nginx时遇到一个 “a client request body is buffered to a temporary file” 的WARN警告。下面分析一下该告警产生的原因和解决办法。

Warn告警样例

2022/04/06 19:40:15 [warn] 32#32: *18371175 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000560810, client: 192.168.0.3, server: localhost, request: "POST /travel/traffic/status HTTP/1.1", host: "testing.toutiao.com"

Warn告警分析

引起该告警的原因是因为Nginx的Buffer缓冲机制。Nginx会将Request请求体缓冲到内存中,然后再发给upstream上游服务。该缓冲区的大小由 client_body_buffer_size 设置,如果Request请求体大于该缓冲区,请求体将会写入临时文件。默认情况下,缓冲区大小等于两个内存页。也就是在32位平台默认是8K,其他64位平台上通常为16K。

Warn告警解决

与该告警有关的两个参数分别是 client_body_buffer_size 和 client_max_body_size。下面分别解释这两个参数的含义。

Syntax: client_body_buffer_size size;
Default: client_body_buffer_size 8k|16k;
Context: http, server, location

设置用于读取客户端请求体的缓冲区大小。如果请求体大于缓冲区,则整个请求体或其部分将写入临时文件。默认情况下,缓冲区大小等于两个内存页。也就是在x86平台默认是8K,在其他64位平台上通常为16K。


Syntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location

设置客户端请求体允许的最大大小。如果请求体大小超过配置的值,413(Request Entity Too Large)错误将返回给客户端。请注意,部分浏览器无法正确显示此错误。默认情况下,该参数的默认值为1兆(1m)。如果将该参数值设置为0将禁用对客户端请求体大小的检查。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表