首页 > JAVA实例疑难问题,不定期服务器负载突然断崖式下跌

JAVA实例疑难问题,不定期服务器负载突然断崖式下跌

最近公司TOMCAT总是出现一些奇葩问题,如图:

这种情况大概4-5天一次吧,但是神奇的是,每一次断崖下跌后,服务是完完全全正常的!
看CDN流量:


同样的时间段,CDN这边表现的非常正常。如果服务真的宕机的话,CDN这边也会跟着断流。

刚开始我的想法是,是不是有人在爬数据或者盗链?导致日常负载流量不正常。盗链的用户那边停止服务了,我这边CPU负载就爆降。
但是经过访问请求日志分析,没有发现什么异常请求。
我分别对比了断崖暴跌前的请求数据和暴跌后的请求数据,分别统计前3小时和后3小时,基本上请求数是差不多的,而且断崖暴跌后请求还会高出不少!但是负载量前后相差3-4倍啊!
奇葩了,我整个人都是懵逼的。
请教各位对JAVA服务比较熟悉的兄弟,知道有可能是什么原因引起的吗?
再上一张详细图:


看到没有,前期CPU波动范围非常宽,忽上忽下的,但是突然断崖下跌后,就呈现一种稳定式波动,然后逐渐波动会再变得越来越大。

更新

1、GC问题考虑过,用jconsole观察,基本上是正常范围波动。毕竟当时已经优化过了,GC设定都是按照优化文档定制的。FGC频率非常低,而且最重要的是,如果是GC出问题,应用程序会没有响应的,TOMCAT会假死。
2、是所有机器都出现这种变化,所有连接都是从NGINX负载均衡分流到各个TOMCAT进群中去的,上面截图是其中一台。基本上是同一时刻,都出现这种状况。通过流量分析,也没看出什么特殊的流量,除了memcached流量比较大之外(大概1M/S),其他流量还算正常。

现在就是进了死胡同,想不到思路去判断这个问题出在哪。唯一可以利用的线索就是CPU会逐渐变得波动范围越来越大,那么也就是说峰谷和峰顶会随着时间变化而变得波动差距越来越高。有什么可能会造成这种情况呢?


这个参考范围太小了,兄弟你就没分析过jvm gc的情况吗?有可能是GC造成的cpu抖动

【热门文章】
【热门文章】