롱 폴링
롱 폴링에 대해 설명합니다.
기본적으로 GitLab Runner는 주기적으로 새로운 CI/CD 잡을 GitLab 인스턴스에 폴링합니다. 실제 폴링 간격은 러너 구성 파일에 구성된 check_interval 및 러너 수에 따라 달라집니다 . 많은 러너를 처리하는 서버에서 이 폴링은 다음과 같은 성능 문제를 일으킬 수 있습니다: 더 긴 대기 시간. GitLab 인스턴스에서 더 높은 CPU 사용량. 이러한 문제를 완화하려면 롱 폴링을 활성화해야 합니다. 사전 조건: 관리자여야 합니다. 롱 폴링 활성화 # 새 잡이 준비될 때까지 롱 폴링에서 러너의 잡 요청을 유지하도록 GitLab 인스턴스를 구성할 수 있습니다. 이를 위해 GitLab Workhorse 롱 폴링 지속 시간( apiCiLongPollingDuration )을 구성하여 롱 폴링을 활성화합니다: Linux package (Omnibus) Helm chart (Kubernetes) Docker /etc/gitlab/gitlab.rb 를 편집합니다: gitlab_workhorse[ 'api_ci_long_polling_duration' ] = "50s" 파일을 저장하고 GitLab을 재구성합니다: sudo gitlab-ctl reconfigure gitlab.webservice.workhorse.extraArgs 설정으로 롱 폴링을 활성화합니다. Helm 값을 내보냅니다: helm get values gitlab > gitlab_values.yaml gitlab_values.yaml 을 편집합니다: gitlab: webservice: workhorse: extraArgs: "-apiCiLongPollingDuration 50s" 파일을 저장하고 새 값을 적용합니다: helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab docker-compose.yml 을 편집합니다: version: "3.6" services: gitlab: image: 'gitlab/gitlab-ee:latest' restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | gitlab_workhorse['api_ci_long_polling_duration'] = "50s" 파일을 저장하고 GitLab을 다시 시작합니다: docker compose up -d 메트릭 # 롱 폴링이 활성화되면 GitLab Workhorse는 Redis PubSub 채널을 구독하고 알림을 기다립니다. 잡 요청은 러너 키가 변경되거나 apiCiLongPollingDuration 에 도달하면 롱 폴링에서 릴리스됩니다. 모니터링할 수 있는 여러 Prometheus 메트릭이 있습니다: 메트릭 유형 설명 레이블 gitlab_workhorse_keywatcher_keywatchers Gauge GitLab Workhorse에서 감시하는 키의 수 gitlab_workhorse_keywatcher_redis_subscriptions Gauge R
