Node.js에서 HTTPS keepAlive 활성화

내가 지금 이것을 배우는 방법에 대한 실마리는 없지만 나중에 안 하는 것보다 낫습니다. HTTPSkeepAlive는 Node.js에서 기본적으로 활성화되지 않으며 네트워크 집약적인 애플리케이션에 심각한 성능 영향을 미칩니다.

영향을 설명하기 위해 서버가 us-central1에서 호스팅되고 us-east1에서 서비스와 통신한다고 가정하면 네트워크 대기 시간은 ~20ms입니다. TCP 핸드셰이크는 3패킷 이벤트이므로 TLS 핸드셰이크를 설정하는 데만 ~60ms가 할당된다는 의미입니다.

간단한 스크립트로 테스트할 수 있습니다.

const got = require('got');

const main = async () => {
  const response0 = await got('https://posthog.com/');

  console.log(response0.timings.phases);

  const response1 = await got('https://posthog.com/');

  console.log(response1.timings.phases);
};

main();


이 시나리오에서 위의 내용은 다음을 생성합니다.

{
  wait: 1,
  dns: 20,
  tcp: 72,
  tls: 74,
  request: 0,
  firstByte: 79,
  download: 222,
  total: 468
}
{
  wait: 0,
  dns: 1,
  tcp: 67,
  tls: 69,
  request: 1,
  firstByte: 73,
  download: 234,
  total: 445
}


그러나 total를 활성화한 경우 keepAlive 시간을 확인하십시오.

const got = require('got');
const https = require('https');

https.globalAgent = new https.Agent({ keepAlive:true });

const main = async () => {
  const response0 = await got('https://posthog.com/');

  console.log(response0.timings.phases);

  const response1 = await got('https://posthog.com/');

  console.log(response1.timings.phases);
};

main();



{
  wait: 1,
  dns: 27,
  tcp: 77,
  tls: 75,
  request: 0,
  firstByte: 75,
  download: 220,
  total: 475
}
{
  wait: 0,
  dns: 0,
  tcp: 0,
  tls: 0,
  request: 0,
  firstByte: 77,
  download: 83,
  total: 160
}


두 번째 요청은 첫 번째 요청보다 70% 빠릅니다!

응용 프로그램이 많은 HTTPS 호출에 의존하는 경우 단순히 활성화keepAlive하면 성능이 크게 향상됩니다.

좋은 웹페이지 즐겨찾기