记录一次Debug的调试过程
开发联调阶段通过zuul网关给app提供接口。但调用接口时好时坏,有时抛出如下异常。
{
"timestamp"
:
1590461140265
,
"status"
:
500
,
"error"
:
"Internal Server Error"
,
"exception"
:
"com.netflix.zuul.exception.ZuulException"
,
"message"
:
"TIMEOUT"
}
只知道是TIMEOUT,有一定的概率发生,但具体是哪里超时无法确定。也只能让接口调用者先不停的retry。
zuul超时 ? ribbon超时 ? hystrix超时 ?
搜索timeout配置项毫无发现
抛出的堆栈信息包含重要信息。
以下是一些调试的技巧。
打断点: 选择一个地方作为入口。
逐行跟踪: Step Over , Step Into , Force Step Into , Step Out ,Drop Frame , Return to Cursor , Resume Frame 。
这是了解一个软件(插件) 内部执行逻辑最好的方法。只有一步步调试下去,一定能找到到底是哪里出错了。
其余一些捷径。
点击包名即可进入到包内。
包内进行搜索 timeout。
最终在hystrix包内检索到 execution.isolation.thread.timeoutInMilliseconds 配置项,加上propertyPrefix ,完整的配置如下。
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000
归根到底还是对zuul,ribbon,hystrix 不了解 ,不了解每个组件的功效,不了解其基本配置,更不了解其工作原理。
以上是 记录一次Debug的调试过程 的全部内容, 来源链接: utcz.com/z/516790.html