public JVMMetricsListDataVO getVariableThreadsCount()

in backend/src/main/java/org/apache/iotdb/admin/service/impl/MetricsServiceImpl.java [172:252]


  public JVMMetricsListDataVO getVariableThreadsCount(Connection connection) throws BaseException {
    String name = "处于各种状态的线程数";
    String metricType = "线程";
    String pattern = "yyyy-MM-dd' 'HH:mm:ss.SSS";
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
    Integer detailAvailable = 0;
    int port = connection.getPort();
    // TODO bug 修复后删除
    if (port == 6668) {
      port = 8086;
    }
    String sql =
        "select * from "
            + "root._metric.\"127.0.0.1:"
            + port
            + "\".\"jvm.threads.states\".\"state=new\", "
            + "root._metric.\"127.0.0.1:"
            + port
            + "\".\"jvm.threads.states\".\"state=waiting\", "
            + "root._metric.\"127.0.0.1:"
            + port
            + "\".\"jvm.threads.states\".\"state=runnable\", "
            + "root._metric.\"127.0.0.1:"
            + port
            + "\".\"jvm.threads.states\".\"state=blocked\", "
            + "root._metric.\"127.0.0.1:"
            + port
            + "\".\"jvm.threads.states\".\"state=timed-waiting\", "
            + "root._metric.\"127.0.0.1:"
            + port
            + "\".\"jvm.threads.states\".\"state=terminated\" "
            + "order by time desc limit 1";
    SessionPool sessionPool = getSessionPool(connection);
    List<String> values = executeQueryOneLine(sessionPool, sql);
    long lastestTimeStamp = Long.parseLong(values.get(0));
    String s1 = values.get(1);
    String s2 = values.get(2);
    String s3 = values.get(3);
    String s4 = values.get(4);
    String s5 = values.get(5);
    String s6 = values.get(6);
    s1 = s1.substring(0, s1.indexOf('.'));
    s2 = s2.substring(0, s2.indexOf('.'));
    s3 = s3.substring(0, s3.indexOf('.'));
    s4 = s4.substring(0, s4.indexOf('.'));
    s5 = s5.substring(0, s5.indexOf('.'));
    s6 = s6.substring(0, s6.indexOf('.'));
    int newThreadCount = Integer.parseInt(s1);
    int waitingThreadCount = Integer.parseInt(s2);
    int runnableThreadCount = Integer.parseInt(s3);
    int blockedThreadCount = Integer.parseInt(s4);
    int timedWaitingThreadCount = Integer.parseInt(s5);
    int terminatedThreadCount = Integer.parseInt(s6);
    String latestScratchTime = simpleDateFormat.format(lastestTimeStamp);
    String latestResult =
        "新建("
            + newThreadCount
            + ")、"
            + "可运行("
            + waitingThreadCount
            + ")、"
            + "运行("
            + runnableThreadCount
            + ")、"
            + "阻塞("
            + blockedThreadCount
            + ")、"
            + "休眠("
            + timedWaitingThreadCount
            + ")、"
            + "死亡("
            + terminatedThreadCount
            + ")";
    JVMMetricsListDataVO jvmMetricsListDataVO = new JVMMetricsListDataVO();
    jvmMetricsListDataVO.setMetricType(metricType);
    jvmMetricsListDataVO.setDetailAvailable(detailAvailable);
    jvmMetricsListDataVO.setLatestResult(latestResult);
    jvmMetricsListDataVO.setLatestScratchTime(latestScratchTime);
    jvmMetricsListDataVO.setName(name);
    return jvmMetricsListDataVO;
  }