作者回复: 好处是性能更高,坏处是问题定位更困难些
作者回复: 我补充下,你是说:nginx缓存上游的response,而client希望收到response时,且code是200,但还没有收完body,就想判断nginx缓存到完整的response body了吗?
我有个问题,为什么不等接收到完整的http response body再判断呢?因为body是有Content-Length头部标识的,客户端可以判断接收到完整的响应了,且code是200,此时就可以判断nginx缓存完成了。
作者回复: 不是的,worker进程仍然处于Running状态,而不是Sleep状态,除非没有其他可以处理的连接,非常空闲。
作者回复: 不是的,worker进程中没有线程(仅在读取磁盘时可以通过thread_pool配置线程)。
作者回复: 看下error.log中的日志有什么输出么?
作者回复: 是的。客户端有一个强制写入临时文件的指令,主要用作定位问题
作者回复: 不是,请求和响应是业务层面,两次read操作是指,从系统socket缓冲区调用两次read方法读取内容的超时,参考第125课