web应用启动后无法访问问题排查

    最近碰到一个很奇怪 的问题,在idea中启动springboot,正常启动,应用api接口访问都正常。打成war包后放到tomcat中不行,以前也没这个情况,就最近同步了下代码。看tomcat启动日志,也没出错呀。但是访问接口就是转圈,那说明服务是起来在的。后来想起可能问题还是没启动完成,tomcat启动完成的日志最后一部分还是没有打印出来。这种情况是假起来的,端口也有但是应用在容器中没有完成全部启动,肯定有代码有死循环,导致程序卡住无法完全加载完。

    在这里可以用到jps 查询下启动的进程。

找到id  使用命令 jstack 

分析下结果发现了下面这一段

找到这个kafka  counsumer  发现用的是一个死循环来不断的poll数据的方式写的消费者。因为他一直抢占着cpu,在 启动后加载run 方法里  。导致了这个run方法无法结束。在tomcat容器启动就是未启动完成,导致无法正常访问服务。

public class DispatchItemController implements ApplicationRunner {

        

@Override
public void run(ApplicationArguments args) throws Exception {
       
KafkaConsumer<String, String> consumer = AlarmKafkaUtil.getKafkaConsumer(host,topic,groupid);
consumer.subscribe(Arrays.asList(topic));
while (true) {

           。。。。。。

}
    }
}

}

把此方法改造后,用一个线程来启动就正常往下走了。

 

 

       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值