线上服务运行,接口响应慢。
增加了入口方法的耗时 日志。发现很多接口响应超过20秒
下面是对应 的 入口方法 updateTerminalDeviceStatus , 看日志, deveiceCode 为 null 应该直接 返回了,为什么还会 耗时 20 秒 ?? Nutz 里面 过滤器有做些什么操作吗?
2019-11-13 12:31:10,491 [http-bio-8001-exec-4160] INFO com.common.module.PCModule - 回调updateTerminalDeviceStatus事件,参数为:deviceCode:{null},status:{0},detail{null}
2019-11-13 12:31:10,491 [http-bio-8001-exec-4160] DEBUG com.LogTimeProcessor - [POST]URI=/pc/updateTerminalDeviceStatus 20015ms
@At
@Ok("json")
public Map<String, Object> updateTerminalDeviceStatus(@Param("deviceCode") String deviceCode,
@Param("status") int status, @Param("detail") String detail) {
Map<String, Object> result = new HashMap<String, Object>();
log.info("回调updateTerminalDeviceStatus事件,参数为:deviceCode:{" + deviceCode + "},status:{"
+ status + "},detail{" + detail + "}");
// deveiceCode 为null 直接 return 。
if (deviceCode == null || deviceCode.trim().equals("")) {
result.put(IConstants.RESULT_CODE_KEY, IConstants.RESULT_CODE_FAILURE);
result.put(IConstants.RESULT_MESSAGE_KEY, "获取IP失败");
return result;
}
......
return result;
}
类似的情况我发现挺多的, 接口里面的逻辑执行时间不长,但是 整个 接口, 响应时间却 很长....
14:30:16,345 528] [POST]URI=/pc/booking/getDeptRegInfo 20127ms
14:30:23,108 552][POST]URI=/pc/updateTerminalDeviceStatus 20007ms
14:30:24,294 570][POST]URI=/pc/updateTerminalDeviceStatus 20008ms
14:30:26,353 563][POST]URI=/pc/freshTime 20007ms
14:30:23,108 552][POST]URI=/pc/updateTerminalDeviceStatus 20007ms
14:30:24,294 570][POST]URI=/pc/updateTerminalDeviceStatus 20008ms
14:30:31,408 451][POST]URI=/pc/updateTerminalDeviceStatus 20008ms
14:30:28,334 339][POST]URI=/pc/freshTime 20007ms
14:30:28,787 547][POST]URI=/pc/freshTime 20008ms
14:30:29,068 499][POST]URI=/pc/freshTime 20008ms
14:31:06,788 565][POST]URI=/pc/updateTerminalDeviceStatus 20014ms
14:31:08,083 392][POST]URI=/pc/freshTime 20015ms
14:31:12,280 557][POST]URI=/pc/patient/hisLogin 20062ms
14:31:12,514 559][POST]URI=/pc/freshTime 20015ms
14:31:12,514 559][POST]URI=/pc/freshTime 20015ms
14:31:13,091 548][POST]URI=/pc/freshTime 16ms // 有快有慢, 这次请求响应就很快
14:31:13,418 563][POST]URI=/pc/freshTime 20014ms //然后这个又很慢,
14:31:13,481 468][POST]URI=/pc/freshTime 16ms
14:31:13,574 451][POST]URI=/pc/freshTime 20014ms
14:31:46,366 543][POST]URI=/pc/freshTime 20015ms
freshTime 接口 其实只是 update 了 一张表的 时间字段而已 。
这个表的数据总量也就 100 条记录不到,但是偶尔会出现耗时 20秒的情况。
下面这个 接口, 基本没有什么耗时的操作, 也要20 秒才返回 ......
2019-11-13 12:31:08,244 [http-bio-8001-exec-4284] DEBUG com.LogTimeProcessor - [POST]URI=/pc/mzfee/saveRecordInSession 20015ms
@At
@Ok("json")
public Map<String, Object> saveRecordInSession(
@Param("..") Record record,
@Param("canUseInsurance") String canUseInsurance,
HttpSession session) {
Map<String, Object> response = new HashMap<>();
record.setIsInsurance(canUseInsurance);
session.setAttribute(MainModule.CURRENT_RECORD, record);
response.put(IConstants.RESULT_CODE_KEY, IConstants.RESULT_CODE_SUCCESS);
response.put(IConstants.RESULT_MESSAGE_KEY, "保存成功");
return response;
}