MQ和ELK,增加了日常排查问题的复杂度

 

最近遇到一个问题,排查了很久,才解决。这里分享一下思路,遇到问题的思路更重要,有时候,就是看你有没有思路。

就怕没有了思路,那样就病急乱投医了。

 

问题描述:最初的问题就是这个报错,分析了一下原因,是jar包冲突

 

2020-06-29 18:30:05,830 [SimpleAsyncTaskExecutor-1] ERROR cn.xxxxxxxx.xxxxxxxx.xxxxxxxx.service.impl.XxxxxxxxxxServiceImpl - [1026 - 4b75ae3c3944cd1a - 7b96151ea30561d6] - excel03And07CommonProcess error 
com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoSuchMethodError: org.terracotta.statistics.StatisticsManager.tags([Ljava/lang/String;)Ljava/util/Set;
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java:51)
	at com.alibaba.excel.ExcelReader.<init>(ExcelReader.java:143)
	at com.alibaba.excel.read.builder.ExcelReaderBuilder.build(ExcelReaderBuilder.java:270)
	at cn.xxxxxxxx.xxxxxxxx.xxxxxxxx.utils.FileUtils.readFileByEasyExcelCommon(FileUtils.java:180)
	at cn.xxxxxxxx.xxxxxxxx.xxxxxxxx.service.impl.XxxxxxxxxxServiceImpl.startParseExcelFile(PullHermesBillServiceImpl.java:140)
	at cn.xxxxxxxx.xxxxxxxx.xxxxxxxx.service.impl.XxxxxxxxxxServiceImpl.excel03And07CommonProcess(PullHermesBillServiceImpl.java:77)
	at cn.xxxxxxxx.xxxxxxxx.xxxxxxxx.listener.XxxxxxxxxxProcessListener.process(HermesBillFileProcessListener.java:30)
	at cn.sephora.platform.rabbitmq.listener.AbstractMessageListener.onMessage(AbstractMessageListener.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
	at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:115)
	at org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler.invoke(DelegatingInvocableHandler.java:108)
	at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:52)
	at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:126)
	at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:106)
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:823)
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:746)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:99)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:191)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1238)
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:727)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1192)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1176)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1100(SimpleMessageListenerContainer.java:99)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1370)
	at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.NoSuchMethodError: org.terracotta.statistics.StatisticsManager.tags([Ljava/lang/String;)Ljava/util/Set;
	at org.ehcache.impl.internal.store.offheap.AbstractOffHeapStore.<init>(AbstractOffHeapStore.java:138)
	at org.ehcache.impl.internal.store.disk.OffHeapDiskStore.<init>(OffHeapDiskStore.java:118)
	at org.ehcache.impl.internal.store.disk.OffHeapDiskStore$Provider.createStoreInternal(OffHeapDiskStore.java:374)
	at org.ehcache.impl.internal.store.disk.OffHeapDiskStore$Provider.createStore(OffHeapDiskStore.java:329)
	at org.ehcache.impl.internal.store.disk.OffHeapDiskStore$Provider.createStore(OffHeapDiskStore.java:295)
	at org.ehcache.core.EhcacheManager.getStore(EhcacheManager.java:502)
	at org.ehcache.core.EhcacheManager.createNewEhcache(EhcacheManager.java:344)
	at org.ehcache.core.EhcacheManager.createCache(EhcacheManager.java:276)
	at org.ehcache.core.EhcacheManager.createCache(EhcacheManager.java:254)
	at com.alibaba.excel.cache.Ehcache.init(Ehcache.java:76)
	at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.defaultReadCache(XlsxSaxAnalyser.java:95)
	at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.<init>(XlsxSaxAnalyser.java:67)
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.choiceExcelExecutor(ExcelAnalyserImpl.java:92)
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java:45)
	... 28 common frames omitted

 

如何定位的jar包冲突呢?这里说一下,建议使用maven helper插件,很好用,具体的安装,使用这里就不再多说了,网上搜索一

下即可。安装完maven helper插件以后,只要输入可能存在冲突的jar名称进行搜索,就可以很清楚的看到是否存在jar冲突了。

 

然后本地排除依赖以后,问题解决了,部署到测试环境,还是报错。好,接下来就开始各种问题排查了。重点在于思路,这里

列举一下排查的思路:

1,看最新的代码是否提交测试环境,我们用的git,直接切到测试使用的release分支,更新代码,看代码是否上了测试环境。

2,把测试环境打的最新的jar拉下来,看打的jar里面,是否包含冲突的2个jar包文件。

3,日志是排查问题的关键。

 

排查了很久,没有找到问题,这些方法都行不通。

 

最后终于找到问题了,这个功能使用了mq异步,程序把请求丢给mq以后,mq把请求转发给了一台过期的服务器。

最后总结下来,有2点收获:

1,日志是可靠的。只是因为ELK增加了日志的复杂度,以你了解ELK的工作原理很有必要。

2,mq是如何路由的,这一点很重要。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值