속도 제한에 대한 데이터 기반 접근 방식 정보
속도 제한이 없으면 시간당 수만 개의 요청을 만드는 단일 CI 통합으로 모든 사용자의 전체 인스턴스 속도가 느려질 수 있습니다. 그러나 제한을 너무 공격적으로 설정하면 팀이 사용하는 통합을 깨뜨릴 수 있습니다. 데이터 기반 접근 방식을 사용하면 적절한 균형을 찾을 수 있습니다. 즉, 실제 사용 패턴을 관찰한 다음 수집한 데이터에 따라 점진적으로 제한을 적용합니다.
이 방법은 다음 단계를 따릅니다.
-
**관찰**: 로그 전달을 사용하도록 설정하고 API 트래픽 패턴을 분석합니다. -
**기준:** 초기 값이 높은 속도 제한을 사용하도록 설정하여 속도 제한 데이터 수집을 시작합니다. -
**구체화**: 관찰된 사용량에 따라 제한을 조정하고 영향을 받는 팀과 통신합니다. -
**유지 관리**: 시간에 따른 제한을 지속적으로 모니터링하고 조정합니다.
관리 콘솔를 통해 속도 제한을 사용하도록 설정하는 방법에 대한 자세한 내용은 속도 제한 구성을 참조하세요.
사전 요구 사항
시작하기 전에 다음을 확인합니다.
- 관리 콘솔에 대한 관리자 액세스
- 로그 전달 구성에 대한 액세스
- 중앙 집중식 로그를 분석하는 기능
- 조직의 API 사용 패턴 및 중요한 통합 이해
1단계: 로그 전달을 활성화
로그 전달을 사용하여 모니터링 및 분석을 위해 API 요청 로그를 중앙 집중화합니다. 자세한 내용은 로그 전달을(를) 참조하세요.
전달된 로그를 분석할 때 다음 주요 필드에 집중합니다.
| 분야 | 설명 |
|---|---|
Timestamp | 요청이 이루어진 시점 추적 |
user / gh.actor.login | 사용자 또는 통합 요청 식별 |
path_info / gh.request.api.route | 액세스 중인 API 경로 |
status | HTTP 응답 코드(예: 200 성공 또는 429 속도가 제한된 경우) |
user_agent | 요청을 보내는 클라이언트 또는 통합 식별 |
2단계: 제한을 사용하도록 설정하기 전에 API 추세 분석
속도 제한을 사용하도록 설정하기 전에 전체 사용 추세를 분석하여 기준을 설정합니다.
-
**상위 소비자를 식별합니다.** 요청 수가 가장 많은 사용자 또는 통합을 찾습니다. -
**수요가 많은 엔드포인트를 검토합니다.** 가장 많은 트래픽을 수신하고 최적화를 활용할 수 있는 API 경로(`path_info`)를 강조 표시합니다. -
**비효율적인 패턴을 검색합니다.** 캐싱 또는 중복 요청 없이 자주 폴링하는 등 사용량이 많거나 비효율적인 징후를 찾습니다.
이 기준 데이터는 추측이 아닌 실제 사용량에 의해 제공되는 속도 제한을 설정하는 데 도움이 됩니다.
3단계: 초기 값이 높은 속도 제한 사용
속도 제한을 사용하도록 설정할 준비가 되면 높은 임계값으로 시작하여 기존 워크플로를 방해하지 않고 추가 데이터를 수집할 수 있습니다.
-
관리 콘솔에서 기본 API 속도 제한을 시간당 25,000개 요청과 같은 높은 값으로 설정합니다. 자세한 내용은 속도 제한 구성을(를) 참조하세요.
-
속도 제한을 사용하도록 설정한 후 전달된 로그에
gh.rate_limit표시되는 필드를 모니터링합니다.분야 설명 gh.rate_limit.primary.max허용되는 최대 요청 수 gh.rate_limit.primary.remaining현재 기간의 나머지 요청 gh.rate_limit.primary.used해당 기간에 이미 만들어진 요청 gh.rate_limit.primary.reset요율 제한 기간이 재설정되는 Unix 타임스탬프
4단계: 제한을 구체화하고 사용량이 많은 문제를 해결합니다.
필드의 데이터를 gh.rate_limit 사용하여 정보에 입각한 결정을 내립니다.
-
**제한에 근접한 사용자를 식별합니다.** 임계값에 자주 접근하거나 초과하는 사용자 또는 통합을 찾습니다. -
**적절한 제한을 결정합니다.** 임의의 값이 아닌 관찰된 사용량 추세에 따라 속도 제한을 설정합니다. -
**영향을 받는 팀과 통신합니다.** 팀과 협력하여 요청 일괄 처리, 응답 캐싱 및 조건부 요청과 같은 기술을 통해 API 사용량을 최적화합니다.
5단계: 제한 줄이기 및 시간 경과에 따른 유지 관리
API 사용량을 명확하게 파악한 후에는 인스턴스의 용량 및 실제 사용 패턴에 맞게 속도 제한을 점진적으로 줄입니다. 각 조정 후 의도하지 않은 중단을 모니터링합니다.
제한을 구체화할 때 통합에 영향을 받는 팀과 함께 작업합니다. 요청 일괄 처리, 응답 캐싱 및 조건부 요청과 같은 기술은 팀이 API 사용량을 줄이는 데 도움이 될 수 있습니다. 유틸리티 ghe-config를 사용하여 특정 사용자를 속도 제한에서 제외할 수도 있습니다. 자세한 내용은 명령줄 유틸리티을(를) 참조하세요.
새 통합이 추가되고 워크플로가 진화함에 따라 사용 패턴이 변경되므로 주기적으로 속도 제한 데이터를 검토합니다.
추가 고려 사항
-
**GraphQL API 제한.** GraphQL API에는 예외 목록을 통해 우회할 수 없는 별도의 속도 제한(기본값: 시간당 5,000포인트)이 있습니다. 자세한 내용은 [AUTOTITLE](/graphql/overview/rate-limits-and-node-limits-for-the-graphql-api)을(를) 참조하세요. -
**보조 속도 제한입니다.** 보조 속도 제한을 사용하도록 설정하여 전체 서비스 수준을 보호할 수도 있습니다. 자세한 내용은 [AUTOTITLE](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#enabling-secondary-rate-limits)을(를) 참조하세요.
추가 읽기
-
[AUTOTITLE](/rest/overview/rate-limits-for-the-rest-api)