피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 6.2.2 릴리스가 HTTP keep-alive 연결 재사용 시 소켓 상태 관리 버그를 수정하고 npm을 3.9.5로 업그레이드
Node.js 6.2.2 (Current)
AI 요약
Context
HTTP keep-alive를 사용하는 Agent에서 소켓을 재사용할 때 prefinish 이벤트와 end 이벤트를 모두 기다리지 않으면 이전 요청의 본문 전송이 완료되기 전에 다음 요청이 기록되어 파서 오류가 발생한다. req.read(0)을 호출할 때 특정 조건에서 수신 연결이 정체되고 시간 초과될 수 있다.
Technical Solution
- HTTP keep-alive Agent의 소켓 해제 로직을 수정: prefinish와 end 두 이벤트 모두 대기하도록 변경하여 요청 순서 보장
- req.read(0) 호출 시 연결 정체 문제 해결: Fedor Indutny가 수정한 커밋(#7211) 적용
- npm을 3.9.5로 업그레이드: 패키지 관리자 기능 개선
- HTTP 파서 성능 테스트 강화: token check 반복 횟수 증가(Brian White, #6570)
- 여러 모듈의 벤치마크 추가 및 개선: url.format(), Buffer.concat, child-process-exec-stdout 등의 성능 측정 구현
Key Takeaway
HTTP keep-alive 같은 장시간 연결 유지 패턴에서는 스트림 이벤트의 완료 순서를 명확히 관리해야 요청 파이프라인 오류를 방지할 수 있다.
실천 포인트
Node.js 기반 HTTP 서버에서 keep-alive 연결을 사용할 때 이 버전(
6.
2.2) 이상으로 업그레이드하면 연속된 요청의 본문 전송 순서 보장 문제로 인한 파서 오류를 제거할 수 있다.