问题现象
在项目周会上听到一个问题现象的汇报:公司的官网(子公司的项目网站)总是晚上偶尔挂掉。挂掉的表现就是页面打不开。
由于生产环境运维相关的信息都是交付在运维那边管理,所以之前挂了后的第一反映他们也就是重启。。
(还好只是一个浏览性的网站不存在业务数据交互啥的,挂了也没啥实际大的影响吧)
由于被重启了又是大晚上我们这边没有拿到第一手当时的环境参数等信息。终于一个周一的早上,产品吼了一声说:运营说官网又挂了。于是乎程序猿们兴奋了!
环境参数
正式环境是Linux平台,cpu8核,内存8g,磁盘250g,jdk:1.8.0_25-b17。
排除步骤
1、找运营拿到dump日志
2、分析日志信息
根据报错信息第一时间是找到了对应的业务的报错代码,代码定位的是mybatis的lambdaQuery查询方法,问题,便查了mybatis的版本以及官方的升级记录,没有涉及到跟Lambda报错的
3、根据报错信息:RDX=0x0000000080000e40 is an oop java.lang.invoke.MemberName - klass: 'java/lang/invoke/MemberName' 结果遇到这个问题的不少,细看一下居然是jdk自己低版本的一个问题,对lambda兼容不是很好。 网上踩坑的大佬们的建议是升级到1.8的最高版本,即可规避此问题。
后面想来能遇到jdk官方的问题也不容易,遂记录一下。虽然问题不是不是自己解决的,但能找到解决问题的方式也是可以的。
之后便下载最新的jdk版本部署到环境上,通过指定jdk目录启动服务,后面便持续观察。经过半个月的监控观察果然没有复现了。