首先,感谢春哥的回复哈;
1、我这个时延是用户侧直接看到的,比如chrome浏览器的开发者工具上的Network->Time latency;
觉得存在问题是纯粹的对比测试的表象来看的,而且这个表象是常态的(起码在我的环境上)。不调用ngx.flush时100次里也就只有几次时延高达100ms,基本都在45ms上下;调用ngx.flush的话100次里有90多次时延高大250-300ms.
2、调用Proxy_response时是没有指定chunksize的,这样就会按照upstream侧的响应chunk块大小来转发响应;
另,我也确认了 下,是只有print一次的。
3、是的,tcp segment of a reassembled PDU 是wireshark解包时自己的行为,但这个是我从抓包上看到的两种不同的表象;
关于抓包,我漏掉了一个关键信息:
调用ngx.flush时,响应包会有两个,第一个包包括响应头+响应体的第一个chunk块,第二个包为last chunk;
未调用ngx.flush时,响应包只有一个,响应头+响应体的第一个chunk块+last chunk;
为何调用ngx.flush时,last chunk总是要单独发送呢?
谢谢!