restTempale不合理的调用初始化引发的惨案

本文详细记录了一次由于RestTemplate不规范使用导致的服务异常情况。问题表现为服务异常持续两小时,异常信息简洁,缺少完整错误栈。经过分析,发现在并发情况下,MessageConverters列表中出现了null,造成NullPointerException。错误栈信息揭示了问题可能源于特定代码块,且服务异常时间与特定代码执行时间吻合。解决方案包括避免在业务代码中初始化RestTemplate,确保数据安全,并正确处理异常信息以获取完整错误栈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

车祸现场

整个服务异常维持时间

 某日持续两小时;直到运维重启服务之后,得以恢复正常;

现象

  1. xx系统一共两台机器,仅xx机器出现服务异常;
  2. 外部调用xx系统xx机器,均能够正常进入;
  3. xx系统xx机器,调用外部api,在整个事故过程中,均抛出异常;
  4. 异常信息极其简单“restExchangeMap失败:null”,没有完整的错误栈信息;

寻找完整错误栈信息

通过阅读代码,在寻找完整的错误栈信息过程中,发现几点问题:

1,在catch异常的过程中,没有输出完整的错误栈信息(如果考虑日志性能的问题,请捕获已知的异常,简化输出,未知异常,请一定输出完整错误栈信息);

 2、在通用的controller中发现有捕获全局异常,但是下面这样的日志输出,并不能够输出完整错误栈信息࿱

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值