• 로그인지금 시작하세요

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

Java 비동기 계측 소개

New Relic for Java 에는 비동기 활동의 사용자 정의 계측을 위한 API 메소드 세트가 포함되어 있습니다. 이것은 지원되지 않는 프레임워크 에서 비동기 활동을 계측하는 데 가장 유용하지만 API를 사용하여 지원되는 프레임워크에 추가 계측을 추가할 수도 있습니다. 이 문서는 비동기 활동이 어떻게 발생하는지, 그리고 New Relic이 비동기 작업을 모니터링하는 방법을 설명합니다.

비동기 작업

동기식 프로그래밍 모델에서 프로그래밍 작업은 일반적으로 특정 순서로 실행됩니다. 하나의 작업은 다음 작업이 시작되기 전에 완료되어야 하며, 각 작업은 다음 작업이 완료되는 것을 차단합니다.

비동기 프로그래밍은 작업을 병렬로 실행할 수 있도록 비차단 모델을 사용합니다. 비동기식으로 실행되는 작업은 실행 및 초기화에서 서로 완전히 독립적입니다. 비동기 코드는 특정 순서로 실행되지 않기 때문에 서버의 전체 처리 능력을 보다 효율적으로 사용할 수 있고 앱의 처리량이 증가합니다.

비동기 및 스레드 전환

비동기 처리를 사용하는 응용 프로그램의 경우 스레드 전환은 프로그램이나 작업이 한 스레드에서 다른 스레드로 전환 될 때입니다. 이러한 비동기 인터리빙을 이해하면 계측해야 할 메서드를 결정하는 데 도움이 될 수 있습니다.

다음은 외부 요청을 병렬로 수행하는 컨트롤러가 있는 예제 메서드입니다. 이러한 요청은 비동기식으로 실행되므로 각 요청은 서로 독립적으로 실행되고 getScoreAsync() 은 호출된 직후에 반환됩니다. 이렇게 하면 getScoreAsync() 이 외부 호출을 하고 응답을 보내는 동안 요청 스레드가 계속 요청을 할 수 있습니다.

@ResponseBody
@RequestMapping("getScores", method = RequestMethod.Get
produces = “text/plain”)
public String getCreditScores(@RequestParam(name = "uids") uids) {
return Arrays.stream(uids.split(","))
.parallel()
.map(Integer::valueOf)
.map(uid -> getScoreAsync(uid))
.collect(Collectors.toList());}

이러한 요청 중 일부는 다른 요청보다 먼저 완료됩니다. 일부는 요청한 스레드가 다른 작업으로 이동한 후 완료될 수도 있습니다.

New Relic의 비동기식 계측을 통해 APM UI는 작업에 Async 플래그를 지정합니다. 예를 들어 위의 방법이 New Relic에 의해 계측된 경우(자동으로 또는 사용자 지정 계측을 통해) APM UI는 다음과 같이 추적 세부 정보 페이지 에 표시됩니다.

one.newrelic.com > APM > (앱 선택) > Transactions > Transaction trace > Trace details : APM이 Java 애플리케이션의 비동기 활동을 감지하면 드릴다운 열에 비동기 플래그로 표시됩니다.

비동기 및 응답 시간

응답 시간 은 요청자의 관점에서 트랜잭션의 지속 시간으로 정의됩니다. 비동기식 애플리케이션의 경우 응답 시간이 총 트랜잭션 시간보다 짧은 경우가 많습니다. 메서드가 반환하기 전에 이전 메서드가 모두 완료될 때까지 기다릴 필요가 없기 때문입니다. 작업이 지연될 수 있기 때문에 응용 프로그램은 제한된 리소스를 활용하고 작업을 더 빠르게 처리할 수 있습니다.

차트의 응답 타임 라인은 총 웹 트랜잭션 시간보다 애플리케이션의 인지된 동작과 속도에 대한 더 많은 통찰력을 제공합니다.

one.newrelic.com > APM > (앱 선택) > Summary : APM 요약 페이지에서 Java 앱의 비동기 활동으로 인해 응답 시간(파란색 선)이 총 트랜잭션 시간보다 짧아질 수 있습니다. 메서드가 반환하기 전에 이전 메서드가 모두 완료될 때까지 기다릴 필요가 없기 때문입니다.

비동기 API를 사용한 사용자 정의 계측

비동기 작업의 사용자 지정 계측을 구현하려면 Java 에이전트 비동기 API 가이드 를 참조하세요. Java 에이전트 API 사용 방법에 대한 일반 정보는 Java 에이전트 API 가이드 를 참조하십시오.

Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.