最近运维反应线上开启http2时会有少比例408(request timeout)状态码,通过日志来看已经有range响应头,故觉得不是client_header_timeout或client_body_timeout造成的,对哪来的408百思不得解啊,现猜测是当前版本的http2实现不够好。
线上环境:openresty-1.11.2.1 ,开启http2。
访问日志如下:
$msec $remote_addr $host $scheme $cache_status $request_method $request_uri $server_protocol $status $bytes_sent $http_range $sent_http_content_range $request_time
$upstream_response_time
1517538305.282 116.116.171.01 xyz.com https Hit GET /patch/201802/01/9f3cc752e26b428b3e3a70bba9cbd53b.patch HTTP/2.0 408 0 bytes=601143- "bytes 601143-52393421/52393422" 118.033 60.002
1517538305.282 116.116.171.01 xyz.com https Hit GET /patch/201802/01/4542cca9c50d050ebbc1719732418908.patch HTTP/2.0 408 0 bytes=1113145- "bytes 1113145-13166914/13166915" 114.125 60.004
1517538381.246 120.4.14.94 xyz.com https Hit GET /patch/201801/30/8430325c5dcb4701c3e3fa9c89e0ce2c.patch HTTP/2.0 408 0 bytes=0- "bytes 0-45697070/45697071" 182.705 60.003