mirror of
https://gitee.com/huoyo/ko-time.git
synced 2025-12-06 16:58:26 +08:00
add:callNum
This commit is contained in:
parent
8888c8bae8
commit
9cf146ff5b
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>cn.langpy</groupId>
|
||||
<artifactId>ko-time</artifactId>
|
||||
<version>2.4.6</version>
|
||||
<version>2.4.7</version>
|
||||
<name>KoTime</name>
|
||||
<description>A springboot tool for tracking the paths of the methods,which can help you find method's performances easily.</description>
|
||||
<licenses>
|
||||
|
||||
@ -12,11 +12,11 @@ public class KoSqlConstant {
|
||||
"join ko_exception_relation r on e.id = r.target_id";
|
||||
public final static String queryException = "SELECT id, name, class_name FROM ko_exception_node WHERE id=?";
|
||||
public final static String queryExceptionExist = "SELECT id FROM ko_exception_node WHERE id=?";
|
||||
public final static String addMethodRe = "INSERT INTO ko_method_relation(id, source_id, target_id, avg_run_time, max_run_time, min_run_time) VALUES (?, ?, ?, ?, ?, ?)";
|
||||
public final static String queryMethodRe = "SELECT id, source_id, target_id, avg_run_time, max_run_time, min_run_time FROM ko_method_relation WHERE id=?";
|
||||
public final static String queryMethodReBySource = "SELECT id, source_id, target_id, avg_run_time, max_run_time, min_run_time FROM ko_method_relation WHERE source_id=?";
|
||||
public final static String queryMethodReByTarget = "SELECT id, source_id, target_id, avg_run_time, max_run_time, min_run_time FROM ko_method_relation WHERE target_id=?";
|
||||
public final static String updateMethodRe = "UPDATE ko_method_relation SET source_id=?, target_id=?, avg_run_time=?, max_run_time=?, min_run_time=? WHERE id=?";
|
||||
public final static String addMethodRe = "INSERT INTO ko_method_relation(id, source_id, target_id, avg_run_time, max_run_time, min_run_time, call_num) VALUES (?, ?, ?, ?, ?, ?, ?)";
|
||||
public final static String queryMethodRe = "SELECT id, source_id, target_id, avg_run_time, max_run_time, min_run_time,call_num FROM ko_method_relation WHERE id=?";
|
||||
public final static String queryMethodReBySource = "SELECT id, source_id, target_id, avg_run_time, max_run_time, min_run_time,call_num FROM ko_method_relation WHERE source_id=?";
|
||||
public final static String queryMethodReByTarget = "SELECT id, source_id, target_id, avg_run_time, max_run_time, min_run_time,call_num FROM ko_method_relation WHERE target_id=?";
|
||||
public final static String updateMethodRe = "UPDATE ko_method_relation SET source_id=?, target_id=?, avg_run_time=?, max_run_time=?, min_run_time=?, call_num=? WHERE id=?";
|
||||
public final static String addExceptionRe = "INSERT INTO ko_exception_relation(id, source_id, target_id, location,message) VALUES (?, ?, ?, ?, ?)";
|
||||
public final static String queryExceptionRe = "SELECT id, source_id, target_id, location, message FROM ko_exception_relation WHERE id=?";
|
||||
public final static String queryExceptionReExist = "SELECT id FROM ko_exception_relation WHERE id=?";
|
||||
@ -28,17 +28,17 @@ public class KoSqlConstant {
|
||||
public final static String updateParamsAna = "UPDATE ko_param_ana SET avg_run_time=?, max_run_time=?, min_run_time=? WHERE source_id=? and params=?";
|
||||
|
||||
|
||||
public final static String queryControllers = "select m.id,name,class_name,method_name,method_type,route_name,r.avg_run_time,r.max_run_time,r.min_run_time " +
|
||||
public final static String queryControllers = "select m.id,name,class_name,method_name,method_type,route_name,r.avg_run_time,r.max_run_time,r.min_run_time,r.call_num " +
|
||||
"from ko_method_node m " +
|
||||
"join ko_method_relation r on m.id = r.target_id " +
|
||||
"where m.method_type='Controller'";
|
||||
|
||||
public final static String searchMethodsByName = "select m.id,name,class_name,method_name,method_type,route_name,r.avg_run_time,r.max_run_time,r.min_run_time " +
|
||||
public final static String searchMethodsByName = "select m.id,name,class_name,method_name,method_type,route_name,r.avg_run_time,r.max_run_time,r.min_run_time,r.call_num " +
|
||||
"from ko_method_node m " +
|
||||
"join ko_method_relation r on m.id = r.target_id " +
|
||||
"where m.name like ?";
|
||||
|
||||
public final static String queryChildrenByParent ="select m.id,name,class_name,method_name,method_type,route_name,r.avg_run_time,r.max_run_time,r.min_run_time " +
|
||||
public final static String queryChildrenByParent ="select m.id,name,class_name,method_name,method_type,route_name,r.avg_run_time,r.max_run_time,r.min_run_time,call_num " +
|
||||
"from ko_method_node m " +
|
||||
"join ko_method_relation r on m.id = r.target_id " +
|
||||
"where r.source_id=?";
|
||||
|
||||
@ -40,6 +40,7 @@ public class KoInitController {
|
||||
private final String jQueryJsText = getResourceText("kostatic/JQuery.min.js");
|
||||
private final String uiKitIconsJs = getResourceText("kostatic/uikit-icons.js");
|
||||
private final String KoTimeUtil = getResourceText("kostatic/util.js");
|
||||
private final String commonCss = getResourceText("kostatic/common.css");
|
||||
|
||||
@PostMapping("/login")
|
||||
@ResponseBody
|
||||
@ -146,6 +147,8 @@ public class KoInitController {
|
||||
line = line.replace("koTimeVersionValue", "'" + KoUtil.getVerssion()+ "'");
|
||||
}else if (line.indexOf("abbreviationEnableValue") > -1) {
|
||||
line = line.replace("abbreviationEnableValue", Context.getConfig().getAbbreviationEnable()+"");
|
||||
}else if (line.indexOf("commonCss") > -1) {
|
||||
line = line.replace("commonCss", commonCss);
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
||||
@ -127,13 +127,14 @@ public class DataBase implements GraphService {
|
||||
try {
|
||||
List<Map<String, Object>> query = DataBaseUtil.query(getWriteConnection(), KoSqlConstant.queryMethodRe, new Object[]{sourceMethodNode.getId() + targetMethodNode.getId()});
|
||||
if (query.size() > 0) {
|
||||
if (Math.random() < Context.getConfig().getDiscardRate()) {
|
||||
return null;
|
||||
}
|
||||
// if (Math.random() < Context.getConfig().getDiscardRate()) {
|
||||
// return null;
|
||||
// }
|
||||
Map<String, Object> old = query.get(0);
|
||||
double oldAvg = (double) old.get("avg_run_time");
|
||||
double oldMax = (double) old.get("max_run_time");
|
||||
double oldMin = (double) old.get("min_run_time");
|
||||
int callNum = ((int) old.get("call_num"))+1;
|
||||
BigDecimal bg = BigDecimal.valueOf((targetMethodNode.getValue() + oldAvg) / 2.0);
|
||||
double avg = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
double max = targetMethodNode.getValue() > oldMax ? targetMethodNode.getValue() : oldMax;
|
||||
@ -144,6 +145,7 @@ public class DataBase implements GraphService {
|
||||
avg,
|
||||
max,
|
||||
min,
|
||||
callNum,
|
||||
sourceMethodNode.getId() + targetMethodNode.getId()
|
||||
};
|
||||
DataBaseUtil.update(getWriteConnection(), KoSqlConstant.updateMethodRe, params);
|
||||
@ -155,7 +157,8 @@ public class DataBase implements GraphService {
|
||||
targetMethodNode.getId(),
|
||||
targetMethodNode.getValue(),
|
||||
targetMethodNode.getValue(),
|
||||
targetMethodNode.getValue()
|
||||
targetMethodNode.getValue(),
|
||||
1
|
||||
};
|
||||
DataBaseUtil.insert(getWriteConnection(), KoSqlConstant.addMethodRe, params);
|
||||
}
|
||||
@ -245,6 +248,7 @@ public class DataBase implements GraphService {
|
||||
rootInfo.setAvgRunTime(methodRelation.getAvgRunTime());
|
||||
rootInfo.setMaxRunTime(methodRelation.getMaxRunTime());
|
||||
rootInfo.setMinRunTime(methodRelation.getMinRunTime());
|
||||
rootInfo.setCallNum(methodRelation.getCallNum());
|
||||
List<ExceptionInfo> exceptionInfos = getExceptions(methodId);
|
||||
rootInfo.setExceptionNum(exceptionInfos.size());
|
||||
rootInfo.setExceptions(exceptionInfos);
|
||||
|
||||
@ -117,11 +117,13 @@ public class MemoryBase implements GraphService {
|
||||
methodRelation.setAvgRunTime(targetMethodNode.getValue());
|
||||
methodRelation.setMaxRunTime(targetMethodNode.getValue());
|
||||
methodRelation.setMinRunTime(targetMethodNode.getValue());
|
||||
methodRelation.setCallNum(1);
|
||||
MethodRelation old = methodRelations.get(methodRelation.getId());
|
||||
if (null == old) {
|
||||
methodRelations.put(methodRelation.getId(), methodRelation);
|
||||
return methodRelation;
|
||||
} else {
|
||||
old.setCallNum(old.getCallNum()+1);
|
||||
if (Math.random()<Context.getConfig().getDiscardRate()) {
|
||||
return null;
|
||||
}
|
||||
@ -249,6 +251,7 @@ public class MemoryBase implements GraphService {
|
||||
methodInfo.setAvgRunTime(relation.getAvgRunTime());
|
||||
methodInfo.setMaxRunTime(relation.getMaxRunTime());
|
||||
methodInfo.setMinRunTime(relation.getMinRunTime());
|
||||
methodInfo.setCallNum(relation.getCallNum());
|
||||
if (!methodInfos.contains(methodInfo)) {
|
||||
methodInfos.add(methodInfo);
|
||||
}
|
||||
@ -287,6 +290,7 @@ public class MemoryBase implements GraphService {
|
||||
methodInfo.setAvgRunTime(relation.getAvgRunTime());
|
||||
methodInfo.setMaxRunTime(relation.getMaxRunTime());
|
||||
methodInfo.setMinRunTime(relation.getMinRunTime());
|
||||
methodInfo.setCallNum(relation.getCallNum());
|
||||
if (!methodInfos.contains(methodInfo)) {
|
||||
methodInfos.add(methodInfo);
|
||||
}
|
||||
@ -331,6 +335,7 @@ public class MemoryBase implements GraphService {
|
||||
methodInfo.setAvgRunTime(methodRelation.getAvgRunTime());
|
||||
methodInfo.setMaxRunTime(methodRelation.getMaxRunTime());
|
||||
methodInfo.setMinRunTime(methodRelation.getMinRunTime());
|
||||
methodInfo.setCallNum(methodRelation.getCallNum());
|
||||
|
||||
List<ExceptionInfo> exceptionInfos = getExceptions(methodNode.getId());
|
||||
methodInfo.setExceptionNum(exceptionInfos.size());
|
||||
@ -381,6 +386,7 @@ public class MemoryBase implements GraphService {
|
||||
rootInfo.setAvgRunTime(methodRelation.getAvgRunTime());
|
||||
rootInfo.setMaxRunTime(methodRelation.getMaxRunTime());
|
||||
rootInfo.setMinRunTime(methodRelation.getMinRunTime());
|
||||
rootInfo.setCallNum(methodRelation.getCallNum());
|
||||
List<ExceptionInfo> exceptionInfos = getExceptions(methodId);
|
||||
rootInfo.setExceptionNum(exceptionInfos.size());
|
||||
rootInfo.setExceptions(exceptionInfos);
|
||||
|
||||
@ -124,13 +124,16 @@ public class RedisBase implements GraphService {
|
||||
methodRelation.setAvgRunTime(targetMethodNode.getValue());
|
||||
methodRelation.setMaxRunTime(targetMethodNode.getValue());
|
||||
methodRelation.setMinRunTime(targetMethodNode.getValue());
|
||||
methodRelation.setCallNum(1);
|
||||
String key = methodRelationPre + methodRelation.getId();
|
||||
MethodRelation old = query(key, MethodRelation.class);
|
||||
if (null == old) {
|
||||
insert(key, methodRelation);
|
||||
return methodRelation;
|
||||
} else {
|
||||
old.setCallNum(old.getCallNum()+1);
|
||||
if (Math.random()<Context.getConfig().getDiscardRate()) {
|
||||
insert(key, old);
|
||||
return null;
|
||||
}
|
||||
BigDecimal bg = BigDecimal.valueOf((methodRelation.getAvgRunTime() + old.getAvgRunTime()) / 2.0);
|
||||
@ -242,6 +245,7 @@ public class RedisBase implements GraphService {
|
||||
methodInfo.setAvgRunTime(relation.getAvgRunTime());
|
||||
methodInfo.setMaxRunTime(relation.getMaxRunTime());
|
||||
methodInfo.setMinRunTime(relation.getMinRunTime());
|
||||
methodInfo.setCallNum(relation.getCallNum());
|
||||
if (!methodInfos.contains(methodInfo)) {
|
||||
methodInfos.add(methodInfo);
|
||||
}
|
||||
@ -288,6 +292,7 @@ public class RedisBase implements GraphService {
|
||||
methodInfo.setAvgRunTime(relation.getAvgRunTime());
|
||||
methodInfo.setMaxRunTime(relation.getMaxRunTime());
|
||||
methodInfo.setMinRunTime(relation.getMinRunTime());
|
||||
methodInfo.setCallNum(relation.getCallNum());
|
||||
if (!methodInfos.contains(methodInfo)) {
|
||||
methodInfos.add(methodInfo);
|
||||
}
|
||||
@ -366,7 +371,7 @@ public class RedisBase implements GraphService {
|
||||
methodInfo.setAvgRunTime(methodRelation.getAvgRunTime());
|
||||
methodInfo.setMaxRunTime(methodRelation.getMaxRunTime());
|
||||
methodInfo.setMinRunTime(methodRelation.getMinRunTime());
|
||||
|
||||
methodInfo.setCallNum(methodRelation.getCallNum());
|
||||
List<ExceptionInfo> exceptionInfos = getExceptions(methodNode.getId());
|
||||
methodInfo.setExceptionNum(exceptionInfos.size());
|
||||
methodInfo.setExceptions(exceptionInfos);
|
||||
@ -421,6 +426,7 @@ public class RedisBase implements GraphService {
|
||||
rootInfo.setAvgRunTime(methodRelation.getAvgRunTime());
|
||||
rootInfo.setMaxRunTime(methodRelation.getMaxRunTime());
|
||||
rootInfo.setMinRunTime(methodRelation.getMinRunTime());
|
||||
rootInfo.setCallNum(methodRelation.getCallNum());
|
||||
List<ExceptionInfo> exceptionInfos = getExceptions(methodId);
|
||||
rootInfo.setExceptionNum(exceptionInfos.size());
|
||||
rootInfo.setExceptions(exceptionInfos);
|
||||
|
||||
@ -17,6 +17,7 @@ public class MethodInfo implements Comparable<MethodInfo> {
|
||||
private Double avgRunTime = 0.0;
|
||||
private Double maxRunTime = 0.0;
|
||||
private Double minRunTime = 0.0;
|
||||
private Integer callNum = 0;
|
||||
private MethodType methodType;
|
||||
private Integer exceptionNum = 0;
|
||||
private List<MethodInfo> children = new ArrayList<>();
|
||||
@ -144,6 +145,14 @@ public class MethodInfo implements Comparable<MethodInfo> {
|
||||
this.children = children;
|
||||
}
|
||||
|
||||
public Integer getCallNum() {
|
||||
return callNum;
|
||||
}
|
||||
|
||||
public void setCallNum(Integer callNum) {
|
||||
this.callNum = callNum;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RunTimeNode{" +
|
||||
|
||||
@ -7,6 +7,7 @@ public class MethodRelation {
|
||||
private Double avgRunTime = 0.0;
|
||||
private Double maxRunTime = 0.0;
|
||||
private Double minRunTime = 10000.0;
|
||||
private Integer callNum = 0;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
@ -56,5 +57,11 @@ public class MethodRelation {
|
||||
this.minRunTime = minRunTime;
|
||||
}
|
||||
|
||||
public Integer getCallNum() {
|
||||
return callNum;
|
||||
}
|
||||
|
||||
public void setCallNum(Integer callNum) {
|
||||
this.callNum = callNum;
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ public final class KoInvokedHandler implements InvokedHandler {
|
||||
|
||||
@Override
|
||||
public void onInvoked(MethodNode current, MethodNode parent, Parameter[] names, Object[] values) {
|
||||
if (current == null || (current != null && current.getValue() == 0.0)) {
|
||||
if (current == null) {
|
||||
return;
|
||||
}
|
||||
GraphService graphService = GraphService.getInstance();
|
||||
|
||||
16
src/main/resources/kostatic/common.css
Normal file
16
src/main/resources/kostatic/common.css
Normal file
@ -0,0 +1,16 @@
|
||||
.common-li {
|
||||
color: #333;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.common-li-bolder {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.common-li-special {
|
||||
font-size: 14px;
|
||||
font-weight: 430;
|
||||
color: #3621a5;
|
||||
}
|
||||
@ -42,6 +42,7 @@ tab.summary.sysusage-metric.physical-memory.current-used=此程序占用
|
||||
|
||||
tab.interface.search-tip=搜索方法名或者类名...
|
||||
tab.interface.interface-list.avg-tip=平均响应
|
||||
tab.interface.interface-list.call-num-tip=调用次数
|
||||
tab.interface.interface-list.show-metric.type=类型
|
||||
tab.interface.interface-list.show-metric.avg=平均耗时
|
||||
tab.interface.interface-list.show-metric.max=最大耗时
|
||||
|
||||
@ -42,6 +42,7 @@ tab.summary.sysusage-metric.physical-memory.current-used=ThisUsed
|
||||
|
||||
tab.interface.search-tip=search method name or class name...
|
||||
tab.interface.interface-list.avg-tip=avg
|
||||
tab.interface.interface-list.call-num-tip=callNum
|
||||
tab.interface.interface-list.show-metric.type=type
|
||||
tab.interface.interface-list.show-metric.avg=avg time
|
||||
tab.interface.interface-list.show-metric.max=max time
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
<title>KoTime</title>
|
||||
<style>
|
||||
UIKitCss
|
||||
commonCss
|
||||
</style>
|
||||
<script>
|
||||
UIKitJs;
|
||||
@ -80,20 +81,25 @@
|
||||
let avgRunTime = data[i]['avgRunTime'];
|
||||
let methodType = data[i]['methodType'];
|
||||
let routeName = data[i]['routeName'];
|
||||
let callNum = data[i]['callNum'];
|
||||
|
||||
let apiId = className + "." + methodName;
|
||||
let color = avgRunTime > globalThreshold ? 'danger' : 'success';
|
||||
if (methodType == 'Controller' && routeName != null && routeName != '') {
|
||||
if (abbreviationEnable) {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\"><span style='font-size: 16px;font-weight: 500;'>" + simName + "</span> (<span style='font-size: 14px;font-weight: 430;color:#032b11'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\"><span class='common-li-bolder'>" + simName + "</span> (<span class='common-li-special'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: unset;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}else {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\">" + className + "#<span style='font-size: 16px;font-weight: 500;'>" + methodName + "</span> (<span style='font-size: 14px;font-weight: 430;color:#032b11'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\">" + className + "#<span class='common-li-bolder'>" + methodName + "</span> (<span class='common-li-special'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: unset;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}
|
||||
} else {
|
||||
if (abbreviationEnable) {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\"><span style='font-size: 16px;font-weight: 500;'>" + simName + "</span>   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\"><span class='common-li-bolder'>" + simName + "</span>   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: unset;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}else {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\">" + className + "#<span style='font-size: 16px;font-weight: 500;'>" + methodName + "</span>   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\">" + className + "#<span class='common-li-bolder'>" + methodName + "</span>   <span style='font-size: 10px;text-transform: unset' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: lowercase;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -428,20 +434,25 @@
|
||||
let avgRunTime = data[i]['avgRunTime'];
|
||||
let methodType = data[i]['methodType'];
|
||||
let routeName = data[i]['routeName'];
|
||||
let callNum = data[i]['callNum'];
|
||||
let apiId = className + "." + methodName;
|
||||
let color = avgRunTime > globalThreshold ? 'danger' : 'success';
|
||||
|
||||
if (methodType == 'Controller' && routeName != null && routeName != '') {
|
||||
if (abbreviationEnable) {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\"><span style='font-size: 16px;font-weight: 500;'>" + simName + "</span> (<span style='font-size: 14px;font-weight: 430;color:#032b11'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\"><span class='common-li-bolder'>" + simName + "</span> (<span class='common-li-special'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: unset;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}else {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\">" + className + "#<span style='font-size: 16px;font-weight: 500;'>" + methodName + "</span> (<span style='font-size: 14px;font-weight: 430;color:#032b11'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\">" + className + "#<span class='common-li-bolder'>" + methodName + "</span> (<span class='common-li-special'>" + routeName + "</span>)   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: unset;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}
|
||||
} else {
|
||||
if (abbreviationEnable) {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\"><span style='font-size: 16px;font-weight: 500;'>" + simName + "</span>   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\"><span class='common-li-bolder'>" + simName + "</span>   <span style='font-size: 10px;text-transform: unset' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: unset;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}else {
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" style='color: #333;font-weight: 400;font-size: 14px;' id=\"" + apiId + "-list\">" + className + "#<span style='font-size: 16px;font-weight: 500;'>" + methodName + "</span>   <span style='font-size: 10px;text-transform: lowercase' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span></li>";
|
||||
html += "<li onclick=\"showMethods('" + apiId + "')\" class='common-li' id=\"" + apiId + "-list\">" + className + "#<span class='common-li-bolder'>" + methodName + "</span>   <span style='font-size: 10px;text-transform: unset' class=\"uk-label uk-label-" + color + "\">{{tab.interface.interface-list.avg-tip}} " + avgRunTime + " ms</span>" +
|
||||
"   <span style='font-size: 10px;text-transform: unset;background-color:#6d6d85' class=\"uk-label\">{{tab.interface.interface-list.call-num-tip}} " + callNum + "</span></li>";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -636,7 +647,7 @@
|
||||
let cpuUsage = thread['cpuUsage'];
|
||||
let cpuUsageColor = getCpuUsageColor(cpuUsage);
|
||||
threadMap[id + ''] = stacks;
|
||||
html += `<li onclick="showThreadInfo('${id}')" style='color: #333;font-weight: 400;font-size: 14px;'>id=<span style="font-size: 16px;font-weight: 500;">${id}</span> name=${name} class=${classType} <span style="font-size: 10px;background-color: ${cpuUsageColor};" class="uk-label uk-label-success">{{tab.thread.thread-list.cpu-usage}}:${cpuUsage}%</span> <span style='font-size: 10px;background-color: ${colors[state]};' class="uk-label uk-label-success">${state}</span></li>`;
|
||||
html += `<li onclick="showThreadInfo('${id}')" class='common-li'>id=<span style="font-size: 16px;font-weight: 500;">${id}</span> name=${name} class=${classType} <span style="font-size: 10px;background-color: ${cpuUsageColor};" class="uk-label uk-label-success">{{tab.thread.thread-list.cpu-usage}}:${cpuUsage}%</span> <span style='font-size: 10px;background-color: ${colors[state]};' class="uk-label uk-label-success">${state}</span></li>`;
|
||||
}
|
||||
element.innerHTML = html;
|
||||
});
|
||||
@ -651,7 +662,7 @@
|
||||
let methodName = stack['methodName']
|
||||
let fileName = stack['fileName']
|
||||
let lineNumber = stack['lineNumber']
|
||||
html += `<li style='color: #333;font-weight: 400;font-size: 14px;'>${className}.${methodName} <span style='font-size: 10px;background-color: darkslategray;text-transform: unset' class="uk-label uk-label-success">${fileName}:${lineNumber}</span></li>`;
|
||||
html += `<li class='common-li'>${className}.${methodName} <span style='font-size: 10px;background-color: darkslategray;text-transform: unset' class="uk-label uk-label-success">${fileName}:${lineNumber}</span></li>`;
|
||||
|
||||
}
|
||||
let threadDetailDom = getDom('thread-detail');
|
||||
|
||||
49
src/main/resources/sql/mysql-v2.4.7+.sql
Normal file
49
src/main/resources/sql/mysql-v2.4.7+.sql
Normal file
@ -0,0 +1,49 @@
|
||||
-- spring2 v2.4.7及以上版本
|
||||
-- spring3 v3.1.0及以上版本
|
||||
create table ko_method_node
|
||||
(
|
||||
id varchar(400) not null primary key comment '主键',
|
||||
name varchar(400) null comment '类名+方法名',
|
||||
class_name varchar(400) null comment '类名',
|
||||
method_name varchar(400) null comment '方法名',
|
||||
route_name varchar(400) null comment '路由,controller才有',
|
||||
method_type varchar(64) null comment '方法类型'
|
||||
) comment '方法信息表';
|
||||
|
||||
|
||||
create table ko_method_relation
|
||||
(
|
||||
id varchar(400) not null primary key comment '',
|
||||
source_id varchar(400) null comment '调用方id',
|
||||
target_id varchar(400) null comment '被调用方id',
|
||||
call_num int null comment '调用次数',
|
||||
avg_run_time numeric(10, 2) null comment '平均耗时',
|
||||
max_run_time numeric(10, 2) null comment '最大耗时',
|
||||
min_run_time numeric(10, 2) null comment '最小耗时'
|
||||
) comment '方法调用关系表';
|
||||
;
|
||||
create table ko_exception_node
|
||||
(
|
||||
id varchar(400) not null primary key comment '主键',
|
||||
name varchar(400) null comment '异常名',
|
||||
class_name varchar(400) null comment '类名'
|
||||
) comment '异常表';
|
||||
|
||||
|
||||
create table ko_exception_relation
|
||||
(
|
||||
id varchar(400) not null primary key comment '',
|
||||
source_id varchar(400) null comment '调用方法id',
|
||||
target_id varchar(400) null comment '异常id',
|
||||
location int null comment '异常位置',
|
||||
message varchar(400) null comment '异常消息'
|
||||
) comment '异常关系表';
|
||||
|
||||
create table ko_param_ana
|
||||
(
|
||||
source_id varchar(400) null comment '调用方法id',
|
||||
params varchar(400) null comment '参数组合,-分隔',
|
||||
avg_run_time numeric(10, 2) null comment '平均耗时',
|
||||
max_run_time numeric(10, 2) null comment '最大耗时',
|
||||
min_run_time numeric(10, 2) null comment '最小耗时'
|
||||
) comment '参数分析表';
|
||||
Loading…
x
Reference in New Issue
Block a user