spring cloud gateway cpu使用异常问题排查

☆樱花仙子☆ 提交于 2020-04-21 21:35:57

问题

生产环境发现spring cloud gateway服务cpu使用过高,接近100%

使用top命令查询占用CPU较高的线程,发现4个线程CPU异常

top命令查看线程

spring cloud gateway 基于Netty 实现,默认情况创建一个线程监听端口,accept连接,多个线程(数量等于CPU核心数)处理socket数据,因此怀疑是做路由 转发的四个线程出现问题

使用 jstack 查看java线程栈信息,发现了对应线程确实是做路由转发的线程(jstack中线程是16进制展示的)

jstack执行结果

排查log4j日志,发现大量日志输出,日志级别为debug,怀疑是请求处理线程输出大量日志导致CPU占用过高

处理方式

调整日志级别到info,重新部署服务,CPU 恢复正常

结论

1、大量日志会影响服务性能,高并发场景,谨慎处理日志级别
2、网关是后台所有请求的入口,基于单一职责原则,只做代理,不要添加认证等业务相关的服务,以防系统出现瓶颈
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!