uwsgi_response_write_body报错的几种情况
1、uwsgi_response_write_body_do(): Broken pipe
出现这种情况一般是由于客户端无法等到服务端的回应而关闭了连接,常出现与nginx + uwsgi的情况,当uwsgi做完准备给nginx回应时,发现连接已经关闭了,这时候就会报这个错,需要检查服务端的处理逻辑为什么花这么长时间。
2、uwsgi_response_write_body_do(): TIMEOUT !!!
出现这种情况是客户端一直在接口返回值,但是服务端未生成完整的返回,出现这种情况一般是服务端以很快的速度向nginx写返回,但是nginx向客户端写返回的速度较慢,nginx启动buffer的话,看下面的解释,nginx会以最佳的速度接收response,
如果buffer放不下,就会用到uwsgi_max_temp_file_size这个参数,这边可以设置一个临时文件的大小,如果设置为0,则禁用该功能。
如果出现上述报错,则可以设置一个较大的临时文件大小,以存储response,如果不想设置,则也可以通过禁用buffer解决该问题,禁用buffer后,nginx同步向客户端传输response,最多能读的大小是通过uwsgi_buffer_size设置的。
3、uwsgi_response_write_body_do(): Connection reset by peer
这种情况一般是客户端在接受返回时,服务端主动关闭和客户端的连接而导致,而此时,返回值还未完全返回完成,这种情况,首要检查服务端配置,如:socket超时时间是否过段;客户端长短连接是否不匹配等。