记一次线上logback日志的问题,微服务调用时客户端调用服务端超时,
检查线上机器后发现机器没有什么问题,GC也正常,于是使用jstack排查一下
通过HeapDump - Java线程Dump分析分析工具分析dump文件,发现大量线程等待锁“0x000000008089bab8”,而该锁被线程“XNIO-1 task-4”占用,如下图
进一步查看线程“XNIO-1 task-4”,发现是控制台输出
网上查询后,发现logback打印到console确实会出现死锁现象,原因在于buffer;
解决方法是把logger中的console appender去掉即可