线上的服务就像一个黑匣子,具体什么情况,这个就是体现监控运维的价值,监控报警运维解决了的软件服务最后一公里的问题。大公司一般都有很成熟的监控服务系统,可视化服务状态,自动化运维操作,这些自动化的工具对开发人员来说都是如沐春风,但是一般中小企业这些基础建设就没有那么优秀了,很多问题都需要开发人员自行定位解决。
线上的JVM服务运行久了或者出现访问压力时,服务往往会暴露一些问题,这个时候就需要开发人员自行定位具体问题,OpenJDK也提供了一些基本工具,比如 jstat jstack jmap jps jinfo。
对于JVM服务可能出现的问题,我们一般依次排查内容为:
(1). 宿主机器问题
(2). JVM内存,是否频繁GC
(3). 线程栈,是否线程暴涨,线程死锁
(4). 排查日志,检查程序代码