PostgreSQL 튜닝
PostgreSQL 튜닝에 대해 설명합니다.
다음과 같은 경우 PostgreSQL을 튜닝해야 합니다: 다른 GitLab 구성요소가 데이터베이스에 영향을 미치는 방식으로 재구성되거나 확장된 경우. GitLab 환경의 성능이 저하된 경우. GitLab이 외부 PostgreSQL 서비스 를 사용하는 경우. 외부 인스턴스에 필요한 설정 # 다음 설정은 외부에서 관리되는 PostgreSQL 인스턴스에 필요합니다. 조정 가능한 설정 필요한 값 추가 정보 work_mem 최소 8 MB 이 값은 Linux 패키지 기본값입니다. 대규모 배포에서 쿼리가 임시 파일을 생성하는 경우 이 설정을 늘려야 합니다. maintenance_work_mem 최소 64 MB 더 큰 데이터베이스 서버에는 더 많은 값이 필요합니다. max_connections 최소 400 GitLab 구성요소를 기반으로 계산합니다. 자세한 지침은 데이터베이스 연결 계획을 참조하십시오. shared_buffers 최소 2 GB 더 큰 데이터베이스 서버에는 더 많은 값이 필요합니다. Linux 패키지 기본값은 서버 RAM의 25%로 설정됩니다. statement_timeout 15000 ~ 60000 statement timeout은 잠금과 관련된 폭주 문제 및 데이터베이스가 새 클라이언트를 거부하는 것을 방지합니다. 15 60초(15000 60000밀리초) 사이의 값을 사용해야 하며, 1분은 Puma rack timeout 설정과 일치합니다. hot_standby_feedback on 여러 노드와 데이터베이스 부하 분산이 구성된 환경에서는 지연 누적을 방지하기 위해 모든 복제본 노드에서 hot_standby_feedback을 활성화하십시오. 서버의 모든 데이터베이스가 아닌 특정 데이터베이스에 대해 일부 PostgreSQL 설정을 구성할 수 있습니다. 동일한 서버에서 여러 데이터베이스를 호스팅하는 경우 특정 데이터베이스로 구성을 제한할 수 있습니다. 구성을 적용할 위치에 대한 지침은 데이터베이스 관리자 또는 공급업체에 문의하십시오. GCP Cloud SQL의 경우 특정 데이터베이스 또는 사용자에 대해 statement_timeout 을 설정할 수 있지만, 데이터베이스 플래그로는 설정할 수 없습니다. 예: ALTER DATABASE gitlab SET statement_timeout = '60s'; 데이터베이스 연결 계획 # Note GitLab 16.0 이상 버전은 main 및 ci 테이블에 대해 두 세트의 데이터베이스 연결 을 사용합니다. 동일한 PostgreSQL 데이터베이스가 두 테이블 세트를 모두 처리하는 경우에도 연결 사용량이 두 배가 됩니다. GitLab은 여러 구성요소에서 데이터베이스 연결을 사용합니다. 적절한 연결 계획은 데이터베이스 연결 고갈 및 성능 문제를 방지합니다. 각 GitLab 구성요소는 구성에 따라 데이터베이스 연결을 사용합니다. Sidekiq 및 Puma는 초기화 시 PostgreSQL에 대한 연결 풀을 설정합니다. 연결 스파이크나 수요의 일시적 증가가 있는 경우 풀의 연결 수가 나중에 증가할 수 있습니다: