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;
}