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 메시지 등을 기록합니다. 검색창에 검색 문자열을 입력하여 해당 문자열이 포함된 모든 로그 항목을 표시합니다.

트레이스 도구 사용

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를 프록시로 사용하는데 '잘못된 게이트웨이' 오류가 표시되면 여기에 설명된 대로 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 지원 이해를 참조하세요.