Java 异步api的Cpu利用率非常高
我有一个api,用于在Java 异步api的Cpu利用率非常高,java,amazon-web-services,executorservice,Java,Amazon Web Services,Executorservice,我有一个api,用于在DynamoDB中存储数据, 我正在使用谷歌的ListingExecutor服务提交作业,最终将数据发送到DB。但是cpu的利用率非常高,我无法调试原因 代码如下: @Timed(AuditConstants.CRITICAL_TIMER_PREFIX + "sendMessage") public void save(Audit audit) { Callable callable = new CallableResult(auditRepository,audi
DynamoDB
中存储数据,
我正在使用谷歌的ListingExecutor服务提交作业,最终将数据发送到DB。但是cpu
的利用率非常高,我无法调试原因
代码如下:
@Timed(AuditConstants.CRITICAL_TIMER_PREFIX + "sendMessage")
public void save(Audit audit) {
Callable callable = new CallableResult(auditRepository,auditDataUtils,audit);
ListenableFuture<Result> future = executorService.submit(callable);
Futures.addCallback(future, new FutureCallback<Result>() {
@Override
public void onSuccess(@Nullable Result result) {
log.info("Successfully sent audit with uuid {} to Dynamo DB", audit.getAuditId());
}
@Override
public void onFailure(Throwable throwable) {
log.info(ERROR_WHILE_SENDING_THE_MESSAGE, throwable);
handleException(audit, throwable);
}
});
}
private void handleException(Audit audit, Throwable ex) {
log.info("Failed talking to Dynamo DB, writing audit with uuid {} to file", audit.getAuditId(), ex);
producerAuditEventsLogger.logToFile(audit);
}
对于1300 tps的R3节点(c4x大型),CPU利用率高达70%
响应时间非常低,约为20ms
请指导我如何调试,以及降低cpu的建议方法
谢谢您可以按以下方向尝试:
在我看来,这似乎是您的DB操作造成的。在
CallableResult
类中是什么?请共享代码。@VinayPrajapati已更新,您还可以共享visualvm快照吗?问题确实出在数据库操作上,服务器没有提供太多的请求。我们必须增加cpu核心。
@Override
public Result call() throws Exception {
try {
AuditData auditData = auditDataUtils.getAuditData(audit);
auditRepository.saveAuditData(auditData);
return new Result(SUCCESS);
} catch (Exception e) {
throw new Exception("There was an error while writing to DB",e);
}
}