Node.js 프록시 디버깅 및 문제 해결

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

프록시에 추가한 Node.js 코드를 Edge에 배포하기 전에 먼저 작동하는지 확인하는 것이 좋습니다. 이 주제에서는 Node.js 애플리케이션이 포함된 프록시를 배포한 후 디버깅하고 문제를 해결하는 방법을 설명합니다.

연결 풀 크기를 늘려 성능 개선

성능이 느린 경우 maxSockets로 기본 Node.js 연결 풀 크기를 늘리거나 소켓 풀링을 모두 사용 중지하면 문제를 해결할 수 있습니다. 자세한 내용과 코드 예시는 Apigee 커뮤니티의 Node.js 성능 팁: 소켓 풀링을 참조하세요.

Node.js 로그 보기

Node.js 애플리케이션에 대한 로그 정보를 보려면 다음 안내를 따르세요.

  1. 기본 API 프록시 페이지에서 보려는 프록시를 클릭합니다.
  2. 선택한 프록시의 요약 페이지에서 툴바 오른쪽에 있는 Node.js 로그를 클릭합니다.

로그 페이지에서 아래와 같이 보려는 로그의 시간 범위를 선택할 수 있습니다. 로그는 HTTP 메서드 호출, 호출의 성공 또는 실패, console.log 메시지 등을 기록합니다. 검색창에 검색 문자열을 입력하여 해당 문자열이 포함된 모든 로그 항목을 표시합니다.

추적 도구 사용

추적 도구는 일반적인 프록시 디버깅에 유용합니다. 추적 도구 사용에 관한 자세한 내용은 추적 도구 사용을 참고하세요.

콘솔 출력 인쇄

Node.js 코드에 console.log 구문을 삽입하고 트레이스 도구에서 출력을 볼 수 있습니다. 예를 들어 다음 문은 config.user 변수의 값을 출력합니다.

console.log('Logging in as %s', config.username);

추적 도구에서 console.log 메시지 출력을 보려면 추적 도구에서 API를 호출하고 모든 트랜잭션의 출력 을 클릭하여 출력 패널을 엽니다.

다음 코드를 실행했다고 가정할 때

var http = require('http');

console.log('node.js application starting...');

var svr = http.createServer(function(req, resp) {
    resp.end('Hello, World!');
});

svr.listen(9000, function() {
    console.log('Node HTTP server is listening');
});

... 콘솔 구문이 패널에 표시됩니다.

Nginx 타겟 시간 제한 설정 구성

Nginx를 프록시로 사용하는 중에 '잘못된 게이트웨이' 오류가 표시되면 여기에 설명된 대로 Nginx 프록시 시간 제한 구성을 늘려보세요.

예를 들면 다음과 같습니다.

proxy_connect_timeout       60;
proxy_read_timeout          120;

서버가 응답하는 데 걸리는 시간에 따라 이상적인 시간 제한 구성을 결정할 수 있습니다. 예를 들어 적절한 버퍼를 제공하는 데 45~60초의 읽기 시간 제한이 이상적일 수 있습니다.

Apigee 목표 제한 시간 설정 구성

TargetEndpoint의 HttpTargetConnection 요소에서 Apigee 기본 시간 제한 값을 구성할 수도 있습니다. 기본값은 다음과 같습니다.

connect.timeout.millis - 60 seconds
io.timeout.millis - 120 seconds
<HTTPTargetConnection>
    <Properties>
        <Property name="connect.timeout.millis">5000</Property>
        <Property name="io.timeout.millis">5000</Property>
    </Properties>
    <URL>http://www.google.com</URL>
</HTTPTargetConnection>

엔드포인트 속성 참조도 확인하세요.

추가 정보

디버깅에 관해 자세히 알아보려면 다음을 참고하세요.

다음 단계

HTTP/HTTPS, TLS 지원, 기타 고급 주제에 대한 정보를 포함하여 Apigee Edge의 Node.js 모듈 지원에 대한 자세한 내용은 Node.js 모듈의 Edge 지원 이해를 참조하세요.