欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: 木杉的博客

最近新版本宣布后,在运行一段时间后措施溘然无响应了,调查监控,发明JVM堆内存占用在某个时间点溘然飙升,劳务派遣管理系统,最终导致应用无响应:

JVM堆内存操作率一 <a href=劳务调派系统连上升的一种排查思路" src="/uploads/allimg/c180603/152OF0435610-1FH.png" />

重启Tomcat后,应用规复正常,而且后续时间没有产生内存上涨问题。

阐明这个JVM内存曲线,他是直线上升的,以前碰着过雷同的场景,会导致这种直线(匀速)上升的,一般是一个死轮回导致的,假如是普通请求资源泄露的话,上升曲线不会这么平稳,昆山软件开发,会和请求量有必然的干系。

死轮回导致这个线程的资源无法释放,跟着轮回次数的增多,累积的工具越来越多,最终导致堆内存耗尽。

那要如何定位到详细的死轮回位置呢?这个是个困难。之前碰着雷同的问题是通过dump出产情况的JVM内存来阐明,耗时耗力。团结之前的履历,这次我直接去nginx日志搜索响应码为504的请求,果不其然,在内存飙升时间点四周,昆山软件开发,有一个被响应504的请求。

504是什么响应码呢?这个响应码较量少碰着,指的是网关超时 (Gateway timeout)。当一个请求到Tomcat后,Tomcat假如陷入死轮回,那么这个请求自然无法获得响应,nginx期待响应超时,响应给用户504。

504响应时间点和内存飙升时间点对的上,那么或许率就是这个接口导致的,具体阐明这个接口的代码,发明白在非凡参数的环境下,会进入死轮回,修改后问题办理。

总结:

  1. 调查JVM内存曲线,是否是匀速上升
  2. 搜索Nginx响应码为504的日志,查察日志时间是否和内存上升时间点匹配
  3. 阐明Nginx响应码为504的请求,确认是否存在死轮回逻辑