测试环境反馈说页面无数据,所有接口失败,那就直接去看后台应用吧。
登录服务器,发现命令执行很慢,应该是cpu爆满了,使用top命令查看后果然java进程的cpu使用在两三百之间,试着查看日志,反应太慢,那就先jstack 线程堆栈和堆文件。重启应用正常,接口找问题吧。
打开mat应用分析dump发现内存正常,只有几百兆。查看线程信息:Total: 1,000 of 4,152 entries; 3,152 more。 再看线程名近4000个都是com.alibaba.nacos.client.Worker.fixed-,那就搜索一下吧,发现了一篇文章https://www.cnblogs.com/FlyAway2013/p/10818589.html
现场很类似,但是始终没有找到本地报错,先看看其他文章吧。
最终还是找到github的issue上了:https://github.com/alibaba/spring-cloud-alibaba/issues/859 过程其实是一直在这两篇文章徘徊查原因,直到点进了另一个issue里https://github.com/alibaba/nacos/issues/1605,反馈的分析文章:https://www.liaochuntao.cn/2019/09/04/java-web-53/里有这样一个描述
因此,一旦有配置更新——>Context刷新——>NacosConfigProperties被重新创建——>ConfigService缓存失效——>ConfigService重新创建
一旦有配置更新这句话是指有配置修改新增删除什么的,你会发现控制台会打印如下日志:
2019-09-29 17:12:47.879 INFO 8760 --- [190.64.171_8848] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'app-sit.properties', group: 'DEFAULT_GROUP'
没打印一次,后台就会新增一个线程com.alibaba.nacos.client.Worker.fixed-开头的线程;
解决办法是有配置更新重启应用,或者升级新版本