agent.maxFreeSockets 속성은 유휴(free) 상태로 열어 둘 소켓(socket)의 최대 개수를 정의합니다. 이 속성은 Node.js의 http 모듈 인터페이스에 포함되어 있으며, keepAlive 옵션이 활성화된 에이전트에서만 실질적으로 적용됩니다.
문법
agent.maxFreeSockets : number
매개변수
이 속성은 다음과 같은 매개변수를 사용합니다.
number – 유휴 상태에서 유지할 수 있는 소켓의 개수를 지정합니다. 기본값은 256입니다.
예제
maxFreeSockets.js라는 이름의 파일을 생성한 뒤 아래 코드를 복사해 붙여넣습니다. 파일 작성이 끝나면 다음 명령어로 코드를 실행할 수 있습니다.
node maxFreeSockets.js
maxFreeSockets.js −
// agent.maxFreeSockets 데모 예제
// http 및 agentkeepalive 모듈 불러오기
const http = require('http');
const agent = require('agentkeepalive');
const keepaliveAgent = new agent({
maxSockets: 100,
maxFreeSockets: 10,
timeout: 60000, // 활성 소켓을 60초 동안 keepalive 유지
freeSocketTimeout: 30000, // 유휴 소켓을 30초 동안 keepalive 유지
});
const options = {
host: 'tutorialspoint.com',
port: 80,
path: '/',
method: 'GET',
agent: keepaliveAgent,
};
console.log("Max free sockets: ", keepaliveAgent.maxFreeSockets);
console.log('[%s] agent status changed: %j', Date(),
keepaliveAgent.getCurrentStatus());
실행 결과
C:\home\node>> node maxFreeSockets.js
Max free sockets: 10
[Fri Apr 30 2021 12:21:12 GMT+0530 (India Standard Time)] agent status
changed:
{"createSocketCount":0,"createSocketErrorCount":0,"closeSocketCount":0,"errorSocketCount":0,"timeoutSocketCount":0,"requestCount":0,"freeSockets":{},"sockets":{},"requests":{}}
실행 결과에서 확인할 수 있듯이, 설정한 maxFreeSockets 값인 10이 콘솔에 그대로 출력됩니다. 또한 에이전트의 현재 상태 정보(생성된 소켓 수, 종료된 소켓 수, 요청 수, 유휴 소켓 목록 등)가 JSON 형태로 함께 표시됩니다.
핵심 정리
maxFreeSockets는keepAlive가 true일 때만 적용됩니다.- 기본값은 256이며, 서버 환경에 맞게 조절하면 리소스를 효율적으로 관리할 수 있습니다.
- 유휴 소켓을 재사용하면 매번 새로운 TCP 연결을 맺는 오버헤드를 줄여 전체 요청 처리 성능이 향상됩니다.