本文介绍压测和调试日志中常见的Error信息。
以下为压测和调试日志中,常见的Error信息:
- class java.net.SocketTimeoutException:null
表示请求在等待响应或者读取中途(idle)超时。请检查服务端健康状况或者PTS的压测API超时时间的设置是否合理,另外还有可能是服务端处理能力出现瓶颈。
- class java.net.ConnectException:null
表示请求在与远端(被压测端)建立TCP连接时就出现失败或者被远端拒绝。请检查服务端健康状况,或者是网络连接层是否有瓶颈。
- class java.util.concurrent.TimeoutException:null
表示请求在与远端(被压测端)建立TCP连接时就出现失败或者被远端拒绝。请检查服务端健康状况,或者是网络连接层是否有瓶颈。
- class org.apache.http.ConnectionClosedException:Connection closed
表示连接异常关闭,服务端主动关闭了连接。
- class java.io.IOException:Connection reset by peer
表示连接被重置。若使用了SLB,请查看SLB的配置是否有问题。
- class org.apache.http.ConnectionClosedException:Connection closed unexpectedly
表示数据尚未接收完毕,连接就已关闭。可能服务端未及时响应或者提前终止调试或压测。
- class java.lang.RuntimeException:java.net.UnknownHostException
表示域名信息无法解析。请检查域名是否已经正常注册并可以解析、未注册的域名是否已进行域名绑定。
建议结合Timing瀑布模型查看,各种报错都可以体现在Timing瀑布模型中,例如:
- 建立连接环节超时。
- 等待响应或者读取响应的间隔时间超时。
Waiting(TTFB)表示等待第一个响应字节的时间。这个时间包括一次完整的往返和延迟,同时包括了服务器应对响应所用的时间。
- class org.apache.http.client.CircularRedirectException
表示请求出现了循环重定向的情况(A -> B -> C -> A),或者跳转超过了10次(A1 -> A2 -> A3... -> A10 ->A11)。建议取消302跳转配置后压测查看原始请求信息,并可结合Timing瀑布流查看跳转具体路径。
- class org.apache.hc.core5.http.ProtocolException:Header 'key: value' is illegal for
HTTP/2 messages
表示在服务端优先使用HTTP2协议的情况下,场景配置了HTTP2协议不支持的Header,请移除相应Header后重试。HTTP2不支持的常见Header有:Connection、Keep-Alive、Proxy-Connection、Transfer-Encoding、Host、Upgrade。