客户端是web服务,服务端是dubbo服务,服务器是tomcat-7.0.61,web调用dubbo服务之后出现了TimeoutException问题,在dubbo admin后台观察到该dubbo服务正常,
一次调用失败以后,以后再调用该dubb服务也会失败,后来查看了服务端的线程信息
发现出现了很多锁等待,等待的锁是
发现是日志打印引起,因为该dubbo服务是同步的,所以一次失败锁住,后续的请求也不会处理,造成线程阻塞。因为日志开启了文件和console,开始猜测是logback console的问题,网上看了下logback有相关的问题,但是测试其他的log,也没重现,后来看到这行
at org.apache.tomcat.util.log.SystemLogHandler.write(SystemLogHandler.java:169) 代码,还调用了tomcat的日志模块,就换了个8.0.47版本的tomcat,打印日志就不会出现锁问题,7.0版本的去了console好像也不会出现。