• 로그인지금 시작하기

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

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

문제 신고

Python 에이전트 및 Gunicorn WSGI 웹 서버

여기 에서는 Python 에이전트를 설치할 때 Gunicorn을 통합하기 위한 요구 사항 및 팁에 대해 설명합니다. Python 에이전트는 Gunicorn을 지원합니다.

  • 기본 sync 작업자
  • 비동기식 eventletgevent 작업자

Python 에이전트 통합

Gunicorn에서 권장하는 관리자 스크립트 통합 방법을 사용할 수 있습니다. 다음은 관리 스크립트를 사용하여 시작 명령을 래핑하는 예입니다.

NEW_RELIC_CONFIG_FILE=/PATH/TO/newrelic.ini newrelic-admin run-program gunicorn YOUR_COMMAND_OPTIONS

Gunicorn을 시작하기 전에 구성 파일 위치를 내보낼 수도 있습니다.

NEW_RELIC_CONFIG_FILE=/PATH/TO/newrelic.ini
export NEW_RELIC_CONFIG_FILE

newrelic-admin run-program gunicorn YOUR_COMMAND_OPTIONS

애플리케이션 사전 로드

Gunicorn의 프로세스 관리 기능의 일부로 애플리케이션의 사전 로드를 활성화할 수 있습니다. 이것이 활성화되면 WSGI 스크립트 파일 또는 모듈이 상위 마스터 프로세스에 미리 로드됩니다. 작업자 프로세스는 이 마스터 프로세스에서 분기됩니다.

이것은 로드될 때 WSGI 스크립트 또는 모듈이 각 작업자 프로세스에서 실행되어야 하는 백그라운드 스레드를 생성하는 경우 문제를 일으킬 수 있습니다. 백그라운드 스레드는 작업자 프로세스가 분기될 때 종료되기 때문입니다.

Python 에이전트는 백그라운드 스레드를 사용하여 데이터를 정기적으로 데이터 수집기에 다시 보고합니다. 정상적인 상황에서는 첫 번째 웹 요청이 수신될 때만 생성됩니다. 일반적으로 작업자 프로세스에 있으므로 사전 로드를 사용하면 문제가 발생하지 않습니다.

그러나 백그라운드 작업으로 특정 기능에 대한 호출을 추적하기 위해 계측을 추가하고 해당 기능이 WSGI 스크립트 파일 또는 모듈을 로드할 때 호출되는 경우 에이전트 백그라운드 스레드는 마스터 상위 프로세스에서 시작됩니다. 작업자 프로세스가 분기될 때 백그라운드 스레드가 이후에 종료되면 실제 웹 애플리케이션에 대한 데이터가 보고되지 않습니다.

사전 로드를 사용하는 경우 코드를 사전 로드하는 데만 사용하고 작업을 수행하기 위해 실제 코드 실행을 트리거하지 않도록 제한하는 것을 목표로 해야 합니다. WSGI 스크립트 파일 또는 모듈이 로드될 때 이러한 처리는 Gunicorn의 post_fork 후크를 사용하여 작업자 프로세스로 지연되어야 합니다.

비슷한 이유로 Gunicorn의 on_starting , on_reload , when_ready , pre_forkpre_exec 후크에서 작업을 수행하는 코드 실행을 피해야 합니다.

Copyright © 2022 New Relic Inc.

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