生产环境 e.printStackTrace 导致的 控制台阻塞,导致的请求一致pending无返回

发布时间 2023-08-09 12:01:18作者: 佩洛君

首先该服务是使用java 调用控制台脚本启动的jar包

 

同时java调用 服务的控制部分也理所应当的

                Process process = null;
                try {
                    process = Runtime.getRuntime().exec(cmd, null, null);
                    process.getOutputStream().close();
                    BufferedReader output = new BufferedReader(new InputStreamReader(process.getInputStream(),
                            System.getProperty("sun.jnu.encoding")));
                    BufferedReader outputErr = new BufferedReader(new InputStreamReader(process.getErrorStream(),
                            System.getProperty("sun.jnu.encoding")));
                    String line = "";
                    Long l1 = 0L;
                    Long l2 = 0L;
                    while ((line = output.readLine()) != null) {
                        l1++;
                        log.debug(line);
                        System.out.println(line);
                    }
                    while ((line = outputErr.readLine()) != null) {
                        l2++;
                        log.debug(line);
                        System.out.println(line);
                    }
                    process.waitFor();
                    outputErr.close();
                    output.close();
                } catch (Exception e) {
                    log.error(entity.getServiceName() + errMsg, e);
                } finally {
                    if (process != null) {
                        process.destroy();
                    }
                }
OutputStream、InputStream,ErrorStream 都处理过了
但是还是在 e.printStackTrace 导致了服务请求pending,而且不是高压测试,只是一个请求马上就无返回了。