지역 간 네트워크 성능 문제의 조사 노트

지역 간 네트워크 성능 문제의 조사

넷플릭스는 아마존 AWS에서 여러 지역에 걸쳐 광대한 클라우드 인프라를 운영하여 원활한 콘텐츠 전달을 지원합니다. 특정 애플리케이션이 지역 간 데이터 동기화 문제를 경험할 때, 초기 의심은 네트워크에 집중되었고, 타임아웃으로 인해 문제가 발생하는 것으로 추측되었습니다.네트워크 엔지니어가 조사했을 때, 클라이언트에서 기인하는 TCP RST 패킷을 발견하여 클라이언트가 연결을 예상치 못하게 종료하고 있음을 확인할 수 있었습니다.패킷 캡처는 서버가 지속적으로 데이터를 전송하고 있지만 클라이언트가 30초 후에 갑자기 연결을 종료하고 있음을 보여주었습니다.애플리케이션을 살펴보면 서버에서 초기 데이터를 받는 데 30초의 타임아웃이 설정되어 있었고, 이 시간 내에 데이터를 받지 못하면 연결을 종료하고 있었습니다.애플리케이션 또는 서버에 최근 변경이 없었음에도 불구하고, 이 문제는 리눅스 커널 업그레이드(버전 6.5.13에서 6.6.10으로)와 함께 발생했습니다.시스템적인 커널 바이섹션을 통해 문제를 일으키는 커밋을 확인할 수 있었고, 이 커밋은 TCP 수신 창 크기 계산에 새로운 메커니즘을 도입했습니다.원래의 계산은 50%의 오버헤드를 가정했지만, 새로운 메커니즘은 실제 데이터 특성에 기반하여 오버헤드를 동적으로 계산하여 더 작은 수신 창 크기를 생성했습니다.이렇게 작아진 창 크기 때문에 애플리케이션은 30초 내에 데이터를 충분히 빠르게 받을 수 없었고, 이로 인해 연결이 종료되었습니다.근본적인 원인은 sysctl_tcp_adv_win_scale 매개변수가 더 정확한 크기 비율로 수신 창 크기를 계산하는 scaling_ratio로 대체된 것과 관련이 있었습니다.커널 업그레이드를 되돌려 애플리케이션의 정상 작동을 복원하는 데 성공했으며, 커널 변경이 문제의 근본적인 원인임을 보여주었습니다.