项目中由于数据过大,在openresty中使用
ngx.req.read_body()
local args = ngx.req.get_body_data()
然后flink任务中的消费者Consumer拿到的数据是body部分是空数据,其他数据是正常的,推断是文件大小受限,导致拿不到数据。
1、排查1,检查nginx的配置,查看是否有对文件的限制,ngxin中使用了
可以确定,nginx对文件没有限制,
然后继续下一步跟踪,由于下一步的处理是转到openresty处理,所以大概率是openresty的问题了,查看openresty最佳实践发现:
client_max_body_size
client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。如果请求的正文数据大于client_max_body_size,HTTP协议会报错 413 Request Entity Too Large。就是说如果请求的正文大于client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值。
client_body_buffer_size
Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中,在哪个临时文件中呢?