记录一次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

回到顶部