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