IL-0382 Linode · 2022-10-19database
Newark 와 Atlanta 의 Linode Object Storage 가 느려지고 모든 클라이언트에 503 - Slow Down 으로 응답했다
10월 19일과 20일 Newark 와 Atlanta 데이터 센터의 Object Storage 클러스터로 요청 수와 처리량이 모두 아주 높은 트래픽이 들어왔다. Linode 는 조사 초기에 여러 문제가 함께 장애를 만들었다는 것을 찾았다. 첫째, 플랫폼 경계의 프런트엔드 속도 제한이 뜻한 대로 동작하지 않아 들어와야 할 양보다 훨씬 많은 트래픽을 받아들였다. 이 부하가 내부 Object Storage 인프라까지 닿아 백엔드 속도 제한이 켜졌고, 고객은 503 - Slow Down 응답을 받았다. 둘째, 내부 Object Storage 의 메모리 사용량이 지나치게 늘어 성능과 안정성을 해쳤다. Ceph 버그 트래커에 이 현상을 설명하는 항목이 있었고, 어떤 설정 값은 이런 스토리지 압박 상황에서 메모리를 지나치게 쓰게 만들었다.
셋째, 부하가 가장 높을 때 내부 Object Storage 인프라가 클러스터 안전 기준 두 가지를 넘었다. 하나는 백엔드 클러스터가 503 - Slow Down 을 내기 전까지 받는 최대 동시 요청 수였고, 다른 하나는 최대 처리량이었다. 이 백엔드 설정 값은 너무 보수적이어서 클라이언트를 너무 일찍 제한했다. 이 제한은 한번 걸리면 공개한 한도를 넘지 않은 클라이언트까지 모두 막았다. Object Storage 에 기대는 Linode 내부 시스템도 간헐적으로 제한을 받아 일부 고객은 Linode Cloud Manager 에서 버킷 목록을 볼 수 없었다. 넷째, 일부 내부 Object Storage 인프라가 자원 경합을 겪었다. 이 밖에 백엔드 클러스터 노드의 적절하지 않은 튜닝과 설정, 과부하에 걸린 프런트엔드 게이트웨이, 요청을 처리하기에 모자란 자원도 문제로 꼽혔다.
Linode 는 경계의 속도 제한을 고쳐 공개한 한도인 버킷당 초당 750 요청을 정확히 지키게 했다. Ceph 버그를 해결하고 설정 값을 조정해 메모리가 폭주하지 않게 했다. 자원 경합을 겪던 내부 구성 요소를 덜 붐비고 성능이 더 높은 인프라로 옮겼다. 내부 구성 요소와 백엔드 클러스터의 성능 설정 값 몇 개를 조정해 고객을 너무 일찍 제한하지 않게 했다.
- 심각도
- –
- 영향 범위
- Object Storage in Newark and Atlanta: degraded performance, reduced availability and 503 - Slow Down responses for all clients; Object Storage functions in Linode Cloud Manager, including bucket listing for some customers
- 영향 사용자
- –
- 지역
- Newark and Atlanta
- 감지까지
- –
- 복구까지
- –
증상
10월 19일과 20일 Newark 와 Atlanta 데이터 센터의 Linode Object Storage 에서 성능과 가용성이 떨어졌다. 고객은 “503 - Slow Down” HTTP 응답 코드로 나타나는 속도 제한을 더 많이 받았다.
같은 시간에 Object Storage 클러스터로 들어오는 요청 수와 처리량이 모두 아주 높았다.
Object Storage 에 기대는 Linode 내부 시스템도 간헐적으로 속도 제한을 받았다. 그 때문에 Linode Cloud Manager 화면의 Object Storage 기능이 제대로 동작하지 않았고, 일부 고객은 버킷 목록을 볼 수 없었다.
내부 Object Storage 에서 메모리 사용량이 지나치게 늘었다. 일부 내부 Object Storage 인프라는 자원 경합을 겪어 고객이 보는 성능이 고르지 않았다.
원인
원인 용량 한계
- 촉발
- 10월 19일과 20일 Newark 와 Atlanta 의 Object Storage 클러스터로 요청 수와 처리량이 모두 아주 높은 트래픽이 들어왔다.
감지
–
조치
- Object Storage 클러스터 경계의 속도 제한을 고쳐 공개한 한도인 버킷당 초당 750 요청을 정확히 지키게 했다. 이전에는 클라이언트가 이 값보다 훨씬 많은 I/O 를 할 수 있었다.
- 일부 내부 Object Storage 인프라에서 메모리를 지나치게 쓰게 하던 Ceph 버그를 해결하고, 하드웨어나 네트워크 고장 뒤 클러스터 복구 같은 스토리지 압박 상황에서 메모리가 폭주하지 않게 설정 값을 조정했다.
- 자원 경합을 겪던 내부 Object Storage 구성 요소를 덜 붐비고 더 안정적이며 성능이 더 높은 인프라로 옮겼다.
- 내부 Object Storage 구성 요소와 백엔드 클러스터의 성능 설정 값 몇 개를 조정해 고객을 너무 일찍 속도 제한하지 않게 했다.
후속 조치
- 처리량 제한을 더 세밀하게 만든다.
- 부하를 더 효율적으로 나누도록 내부 Object Storage 인프라를 키운다.
- 내부 Object Storage 인프라의 하드웨어 성능을 더 높일 방법을 찾는다.
- 클러스터에 부하가 한곳에 몰리지 않도록 부하 분산 알고리즘을 다듬는다.
교훈
백엔드 속도 제한은 한번 걸리면 공개한 한도를 넘지 않은 클라이언트까지 모든 클라이언트에 영향을 준다. Linode 는 버킷당 프런트엔드 속도 제한이 뜻한 대로 동작한다면 클라이언트를 가리지 않는 이런 백엔드 제한은 아예 걸리지 않아야 한다고 봤고, 그래서 백엔드 설정 값을 바꿨다.
출처
- https://status.linode.com/incidents/5wgmd45h7h1j · official-status · 보관본
관련 사례
–
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0382
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0382/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.