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

Apigee Edge 문서입니다.
Go to the Apigee X 문서로 이동합니다.
info

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

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

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

Node.js 로그 보기

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

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

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

Trace 도구 사용

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

콘솔 출력 인쇄

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

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

Trace 도구에서 console.log 메시지의 출력을 보려면 Trace 도구에서 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를 프록시로 사용하고 "Bad Gateway" 오류가 표시되면 여기에 설명된 대로 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 지원 이해를 참조하세요.