性能问答>子进程logback写控制台hang住,进程卡死>
2回复
2年前

子进程logback写控制台hang住,进程卡死


环境参数
  • 操作系统Linux
  • 操作系统版本centos7.3以上
  • JDK版本JDK8
  • 内存32GB
  • CPU核数8
  • 操作系统位数64位

java进程调用python命令启动子进程。父进程中持续读子进程控制台日志。子进程超过10个的情况出现子进程hang住的情况。控制台无日志输出

3852 阅读
请先登录,再评论

线程日志显示你的阻塞线程都在等待0x00000000e46980a8这把锁,这把锁是在OutputStreamAppendersubAppend方法里上的,212行,我不知道你logback的版本,但是在我本地的1.2.2版本里subAppend不上锁了,是在writeBytes里上锁的

  private void writeBytes(byte[] byteArray) throws IOException {
        if(byteArray == null || byteArray.length == 0)
            return;
        
        lock.lock();
        try {
            this.outputStream.write(byteArray);
            if (immediateFlush) {
                this.outputStream.flush();
            }
        } finally {
            lock.unlock();
        }
    }

anyway,可能是你某个线程写日志的时候遇到问题了没有写,所以这把锁没有释放导致其他线程一直在等待这把锁

12年前
回复 六道轮回菠萝:

👍,可能是版本问题

2年前回复