{"id":"IL-0170","org":"Backpackr","date":"2025-05-08","docs":[],"title":{"en":"During a Lunar New Year event, traffic more than three times normal filled the nf_conntrack table on the EKS node running the Istio ingress gateway, dropping packets and taking down Backpackr's web and app services","ko":"설날 이벤트 트래픽이 평소의 3배를 넘자 Istio ingressGateway 가 있는 EKS 노드의 nf_conntrack 테이블이 가득 차 패킷이 버려졌고, 웹과 앱 서비스 전체가 멈췄다."},"domain":["kubernetes","aws","networking"],"impact":{"scope":"Full outage of Backpackr's web and app services; the Lunar New Year event was stopped","users":"unknown","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"When every request in a cluster goes through one ingress gateway node, that node's connection tracking table and network bandwidth set the limit for the whole service. The default nf_conntrack table size was too small for three times normal traffic, and once it filled, packets were dropped. After the outage Backpackr strengthened its monitoring of network bandwidth, packet drops and the Istio components.","ko":"모든 트래픽이 노드 하나의 ingressGateway 를 거치면 그 노드가 단일 장애점이 된다. nf_conntrack 테이블은 기본 크기로 두면 트래픽이 갑자기 몇 배로 늘 때 가득 차고, 그 순간부터 패킷이 버려진다. 게이트웨이 노드는 일반 노드보다 conntrack 한도와 네트워크 대역폭을 넉넉하게 잡고, 네트워크 대역폭과 패킷 드롭 지표를 따로 지켜봐야 한다."},"related":[],"sources":[{"url":"https://aws.amazon.com/ko/blogs/tech/optimizing-amazon-eks-journey-of-backpackr-part2/","kind":"blog","license":"unknown","archived":null}],"summary":{"en":"Backpackr runs the handmade marketplace idus and the crowdfunding platform Tumblbug on Amazon EKS. Every external and internal request went through the Istio ingressGateway on a dedicated Istio node, and as services grew and domains were split, more and more traffic depended on that node. nf_conntrack, the Linux kernel module that records and tracks network connections, is active in container environments for NAT and port forwarding, and once its table (65536 entries by default) is full, newly arriving packets are dropped.\n\nDuring a Lunar New Year event in January 2024, traffic rose to more than three times normal. The nf_conntrack table on the Istio node overflowed, packets were dropped, the ingress gateway stopped answering, and the web and app services went down completely. The Istio node had also hit its network performance limit. Backpackr names the root cause as the network performance of the Istio node, more precisely the nf_conntrack table. The event was stopped.\n\nAfterwards Backpackr raised net.netfilter.nf_conntrack_max on every node to (total instance memory in bytes)/16384/2, and to three times that on Istio nodes, which gives about 500,000 on a 16 GB instance. A nodeOptimizer DaemonSet applies the value automatically, using the instance metadata security groups to tell Istio nodes apart. Backpackr also set up mesh networking so that sidecars talk to each other directly over HTTP instead of through the ingressGateway (HTTPS calls still need TLS offloading at the ingressGateway or NLB), moved the Istio nodes from c6.xlarge (12.5 Gbps) to an n-type instance with up to 25 Gbps, and strengthened monitoring with ENA network bandwidth and packet drops, detailed Istio metrics for the ingressGateway and sidecars, and CPU, memory and saturation.","ko":"백패커는 아이디어스와 텀블벅을 Amazon EKS 에서 운영한다. 클러스터 바깥과 안쪽의 트래픽이 모두 istio 전용 노드의 ingressGateway 를 거쳤고, 서비스가 커지고 도메인이 나뉠수록 이 노드가 맡는 몫이 커졌다.\n\n2024년 1월 설날 이벤트 때 트래픽이 평소보다 3배 넘게 늘었다. nf_conntrack 은 네트워크 연결을 기록하고 추적하는 리눅스 커널 모듈로, 컨테이너 환경에서는 NAT 와 포트 포워딩 때문에 켜져 있다. 연결 기록 테이블의 기본 크기는 65536 이고, 이를 넘으면 새로 들어오는 패킷이 버려진다. istio 노드의 nf_conntrack 테이블이 가득 차면서 패킷이 버려졌고, ingressGateway 가 응답하지 못해 웹과 앱 서비스 전체가 멈췄다. istio 노드의 네트워크 성능도 한계에 다다라 있었다.\n\n백패커는 이벤트를 중단했다. 장애 뒤에는 모든 노드의 nf_conntrack_max 를 올리고, 사이드카끼리 ingressGateway 를 거치지 않고 통신하도록 메시 네트워크를 설정했다. 또 istio 노드를 대역폭이 큰 인스턴스로 바꾸고, 네트워크와 istio 지표 모니터링을 늘렸다."},"trigger":{"en":"An unexpected traffic surge, more than three times normal, during the Lunar New Year event in January 2024.","ko":"2024년 1월 설날 이벤트로 트래픽이 평소보다 3배 넘게 몰렸다."},"severity":"unknown","symptoms":["service-unavailable"],"timeline":{"detected_after":null,"resolved_after":null},"date_kind":"published","detection":{"en":"A developer reported a suspected outage in Slack; the outage became total while several people were still confirming it.","ko":"개발자 한 명이 Slack 에 장애가 의심된다고 제보했다. 여러 사람이 확인하는 동안 장애가 웹과 앱 서비스 전체로 번졌다."},"components":["conntrack","ingress","istio"],"root_cause":"capacity","remediation":[{"text":{"en":"stopped the Lunar New Year event","ko":"서비스 전체가 멈추자 설날 이벤트를 중단했다."}}],"action_items":[{"text":{"en":"Raise net.netfilter.nf_conntrack_max on all nodes to memory bytes/16384/2, and three times that on Istio nodes, applied by the nodeOptimizer DaemonSet","ko":"모든 노드의 nf_conntrack_max 를 올렸다. 일반 노드는 인스턴스 전체 메모리 바이트를 16384 로 나누고 다시 2로 나눈 값, istio 노드는 그 값의 3배를 쓴다. 메모리 16GB 인스턴스라면 net.netfilter.nf_conntrack_max 가 약 50만이 된다. 이 설정은 nodeOptimizer 데몬셋에 넣어 모든 노드에 자동으로 적용했다."}},{"text":{"en":"Configure Istio mesh networking so sidecars communicate directly instead of through the ingressGateway","ko":"VirtualService 의 gateways 에 mesh 를 넣어 사이드카끼리 ingressGateway 를 거치지 않고 직접 통신하게 했다. HTTPS 로 도메인을 호출하면 TLS 오프로딩 때문에 여전히 ingressGateway 나 NLB 를 거쳐야 하므로, 메시 통신은 HTTP 호출에서 쓴다."}},{"text":{"en":"Upgrade the Istio nodes from c6.xlarge (12.5 Gbps) to n-type instances with up to 25 Gbps of network bandwidth","ko":"istio 노드를 12.5Gbps 의 c6.xlarge 에서 최대 25Gbps 대역폭을 내는 n 타입 인스턴스로 바꿨다."}},{"text":{"en":"Strengthen monitoring with ENA network bandwidth and packet drops, detailed Istio ingressGateway and sidecar metrics, and CPU, memory and saturation","ko":"모니터링을 늘렸다. ENA 의 네트워크 대역폭과 패킷 드롭, ingressGateway 와 사이드카 프로세스 상태, CPU 와 메모리 사용률과 포화 상태를 지켜본다."}}],"contributing":["single-point-of-failure","default-config-unchanged","monitoring-blind-spot"],"recurrence_of":null,"symptoms_text":{"en":"During a Lunar New Year event in January 2024, a developer posted a message in Slack suspecting an outage. While several people were checking it, the problem grew into a full outage of Backpackr's web and app services, and the company decided to stop the event.\n\nTraffic was more than three times the usual level. All external and internal traffic passed through the Istio ingress gateway on a dedicated Istio node, and on that node the nf_conntrack table reached 100 percent of its size. New packets were dropped and the ingress gateway failed to respond. The node had also reached the limit of its network performance.","ko":"2024년 1월 설날 이벤트 중에 개발자 한 명이 Slack 에 장애가 의심된다고 알렸다. 여러 사람이 상황을 확인하는 사이에 웹과 앱 서비스 전체가 멈췄고, 백패커는 이벤트를 중단하기로 했다.\n\n트래픽은 평소보다 3배 넘게 늘었다. 외부와 내부 트래픽이 모두 istio 노드의 ingressGateway 하나를 거치는 구조였기 때문에 부하가 그 노드에 몰렸다. istio 노드의 nf_conntrack 테이블이 100% 차서 이후 들어오는 패킷이 버려졌고, ingressGateway 가 응답하지 못했다.\n\nistio 노드는 네트워크 성능도 한계에 다다라 있었다. 노드는 c6.xlarge 인스턴스였고 네트워크 대역폭은 12.5Gbps 였다."},"updated_at":"2026-11-10T00:00:37.216636Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0170","org_slug":"backpackr"}