IL-0351 Heroku · 2017-06-03networking
EU 와 US 에서 Heroku 라우팅 계층을 지나는 요청이 느려지거나 실패했다
your-app.herokuapp.com 꼴의 DNS 레코드는 DNS 라운드 로빈으로 트래픽을 Heroku 서버 전체에 나누도록 설계돼 있었다. 조회할 때마다 서버 가운데 무작위로 고른 일부의 주소가 응답에 담겨 트래픽이 고르게 퍼지는 구조였다. 그런데 Heroku 의 DNS 공급자는 이 사용 방식에서 여러 주소가 아니라 주소 하나만 응답했고, Heroku 는 이 구성 오류를 모르고 있었다. 캐싱 DNS 리졸버 한 대를 함께 쓰는 많은 HTTP 클라이언트 같은 트래픽 패턴에서는 요청이 라우팅 계층의 서버 한 대로 몰려 그 서버가 감당하지 못했다. 그 결과 2017-06-03 부터 06-07 사이 EU 와 US 에서 요청이 느려지거나 실패했다.
DNS 공급자는 이 동작을 옛 방식으로 보고, 새 DNS 레코드에는 여러 주소를 응답하도록 시스템을 바꿨다. Heroku 는 지연이 늘 때마다 트래픽이 많은 출처를 찾아 그 애플리케이션 소유자와 함께 요청을 더 고르게 나눴고, 옛 DNS 레코드를 새로 고친 레코드로 바꿔 들어오는 트래픽이 고르게 나뉘게 했다. 조사 중에는 캐싱 Add-on 공급자에 영향을 주는 DNS 구성 문제도 더 찾았다.
- 심각도
- –
- 영향 범위
- Requests through the Heroku Routing Layer were slow or failed during periods between 3 and 7 June 2017
- 영향 사용자
- All customers in the EU and US, at various times
- 지역
- EU and US
- 감지까지
- –
- 복구까지
- –
증상
2017-06-03 부터 06-07 사이 여러 차례, EU 와 US 의 고객 모두가 때때로 높은 지연을 겪었다. 일부 요청은 실패했고, 일부는 Heroku Routing Layer 를 지나는 데 지나치게 오래 걸렸다.
트래픽이 라우팅 계층의 개별 서버로 고르지 않게 몰려 그 서버들이 감당하지 못했다. 캐싱 DNS 리졸버 한 대를 함께 쓰는 많은 HTTP 클라이언트처럼 특정한 트래픽 패턴에서는 많은 요청이 서버 한 대로만 갔다.
2017-06-07 20:50 UTC 부터는 US Common Runtime 에서 non-SSL/SNI 엔드포인트를 쓰는 앱의 라우팅 지연이 늘었다. Heroku 는 이 영향이 https://status.heroku.com/incidents/1180 에 기록된 것과 같다고 적었다.
원인
원인 DNS·네트워크 장애
- 촉발
- –
감지
–
조치
- 트래픽이 많은 출처를 찾아 그 애플리케이션 소유자와 함께 요청을 더 고르게 나눴다.
- 옛 DNS 레코드를 새로 고친 DNS 레코드로 바꿔 들어오는 트래픽이 고르게 나뉘게 했다.
후속 조치
- 트래픽이 고르지 않게 나뉘면 엔지니어에게 더 빨리 알림이 가도록 모니터링을 고친다.
- 트래픽이 많거나 갑자기 몰릴 때의 영향을 줄이도록 DNS 와 로드 밸런서를 구성하는 방법을 내부 조사로 찾는다.
- 조사 중에 찾은 DNS 구성 문제가 캐싱 Add-on 공급자에 영향을 주므로, 그 공급자들과 함께 부하가 고르게 나뉘도록 작업한다.
교훈
–
출처
- https://status.heroku.com/incidents/1182 · official-status · 보관본
참고 문서
관련 사례
같은 원인 · 공통 클라우드 로드 밸런서
IL-0178EKS 에서 HPA 가 파드를 줄일 때 엔드포인트 제거보다 컨테이너 종료가 먼저 끝나 502 가 났고, 블루/그린 전환 뒤에는 conntrack 에 남은 연결이 삭제된 파드로 가서 클라이언트가 타임아웃을 받았다.Lotte E-commerce · 2022같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0351
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0351/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.