Python 에이전트 는 asyncio 이벤트 루프 진단을 지원합니다. 이벤트 루프를 차단하거나 지연하는 트랜잭션이 있는 경우 에이전트는 진단을 생성하여 해당 트랜잭션을 찾고 해결할 수 있습니다.
요구 사항
Python 에이전트 버전 5.0.0.124 이상이 필요합니다.
New Relic UI에서 보기
APM에서 이벤트 루프 트랜잭션 데이터는 트랜잭션 분석 테이블 및 추적 세부 정보 페이지에 있습니다.
이벤트 루프 지표는 프로세서 Breakdown table 에 표시됩니다.
one.newrelic.com > APM & services > (select an app) > Transactions, See transaction table 클릭한 다음 트랜잭션을 선택합니다. 트랜잭션의 Breakdown table 는 asyncio를 사용하여 이벤트 루프에 플래그를 지정합니다.
다른 프로세서에서 대기하는 데 소요된 시간은 프로세서 Trace details 페이지에 표시됩니다.
one.newrelic.com APM & services > (select an app) > Transactions > (select a transaction trace) > Trace details: Trace details 페이지에는 칩셋 트레이스의 각 세그먼트(메서드 또는 함수 호출)에 대한 분석이 포함된 테이블이 포함되어 있습니다.
이벤트 루프 NRQL 쿼리
eventLoopTime
및 eventLoopWait
속성은 NRQL 쿼리를 통해 사용할 수 있습니다. 쿼리의 예는 다음과 같습니다.
SELECT count(*) AS 'count', average(eventLoopTime) AS 'loopTime', average(eventLoopWait) AS 'loopWait' FROM Transaction FACET name
이벤트 루프 진단 위치
이벤트 루프 진단은 기본적으로 기존 aiohttp, sanic 및 Tornado 계측 프레임워크를 통해 사용할 수 있습니다. Python 에이전트 API background_task 및 web_transaction 데코레이터 API를 사용하는 코루틴은 asyncio의 이벤트 루프도 지원합니다.