出现问题的场景
- 基于spring cloud+nacos全家桶的微服务
- 服务中的一个二方接口,且在二方接口上增加了@LcnTransaction 和 @Transactional注解;同时将HttpServletRequest 当做传入参数使用,代码举例如下:
@LcnTransaction
@Transactional
@PostMapping(value="/test")
public Object insert(@RequestBody Param param , HttpServletRequest req) {
//do sth.
return param;
}
- 其他服务通过feign方式调用该二方接口
导致的结果
- 导致二方接口所在的JVM,内存耗尽,新老代均达到99%。
原因分析
- Lcn在对传入参数序列化时,因对HttpServletRequest对象序列化 ,导致死循环,最终导致内存耗尽
解决方式
- 使用其他方式获取HttpServletRequest req参数,进行使用。