问题
半夜11点多,合作方突然在群里叫我方测试环境服务返回502 Bad Gateway,当时以为服务掉线没当回事。第二天一早安排开发同学查一下掉线原因并重新上线服务,然而服务重启后调用出现异常,并且在几次异常之后对该服务的调用完全hang住。
排查
jstack一顿操作猛如虎后发现大量线程被Block,但是没找到Block的原因。回头看一下日志发现打印了一行
unknown http status. 这才定位到起因是开发同学把定义在返回值中的错误码错误的填写到了 Response HttpCode 里。 修正为标准状态码后症状消失。
分析
怀疑是错误的 HttpCode 导致 Hystrix 熔断出现阻塞。但是按理说 Hystrix 都是 RxJava Actor 模式的, 不应该hang住。 这个问题留待日后查证吧。
附几个 Zuul 的 Issue
- https://github.com/Netflix/zuul/issues/287
- https://github.com/spring-cloud/spring-cloud-netflix/issues/2450
总结
- 遇到问题不能一上来就盲目猜原因, 从基本的异常日志分析开始
网友评论