InfoGrab Docs

번들 PgBouncer 서비스 사용

요약

PgBouncer는 gitlab-ee 패키지에 번들로 포함되어 있으며 무료로 사용할 수 있습니다. PgBouncer는 장애 조치 시나리오에서 서버 간 데이터베이스 연결을 원활하게 마이그레이션하는 데 사용됩니다. GitLab Premium에는 /etc/gitlab/gitlab.rb를 통해 관리할 수 있는 번들 버전의 PgBouncer가 포함되어 있습니다.

Note

PgBouncer는 gitlab-ee 패키지에 번들로 포함되어 있으며 무료로 사용할 수 있습니다. 지원을 받으려면 Premium 구독이 필요합니다.

PgBouncer는 장애 조치 시나리오에서 서버 간 데이터베이스 연결을 원활하게 마이그레이션하는 데 사용됩니다. 또한 장애 허용이 필요하지 않은 설정에서 연결을 풀링하여 리소스 사용을 줄이면서 응답 시간을 향상시킬 수 있습니다.

GitLab Premium에는 /etc/gitlab/gitlab.rb를 통해 관리할 수 있는 번들 버전의 PgBouncer가 포함되어 있습니다.

장애 허용 GitLab 설치의 일부로서 PgBouncer#

이 내용은 새 위치로 이동되었습니다.

비장애 허용 GitLab 설치의 일부로서 PgBouncer#

  1. gitlab-ctl pg-password-md5 pgbouncer 명령으로 PGBOUNCER_USER_PASSWORD_HASH를 생성합니다.

  2. gitlab-ctl pg-password-md5 gitlab 명령으로 SQL_USER_PASSWORD_HASH를 생성합니다. 나중에 일반 텍스트 SQL_USER_PASSWORD를 입력합니다.

  3. 데이터베이스 노드에서 /etc/gitlab/gitlab.rb에 다음이 설정되어 있는지 확인합니다.

    postgresql['pgbouncer_user_password'] = 'PGBOUNCER_USER_PASSWORD_HASH'
    postgresql['sql_user_password'] = 'SQL_USER_PASSWORD_HASH'
    postgresql['listen_address'] = 'XX.XX.XX.Y' # Where XX.XX.XX.Y is the ip address on the node postgresql should listen on
    postgresql['md5_auth_cidr_addresses'] = %w(AA.AA.AA.B/32) # Where AA.AA.AA.B is the IP address of the pgbouncer node
    
  4. gitlab-ctl reconfigure를 실행합니다.

    [!note] 데이터베이스가 이미 실행 중이었다면 재구성 후 gitlab-ctl restart postgresql을 실행하여 재시작해야 합니다.

  5. PgBouncer를 실행하는 노드에서 /etc/gitlab/gitlab.rb에 다음이 설정되어 있는지 확인합니다.

    pgbouncer['enable'] = true
    pgbouncer['databases'] = {
      gitlabhq_production: {
        host: 'DATABASE_HOST',
        user: 'pgbouncer',
        password: 'PGBOUNCER_USER_PASSWORD_HASH'
      }
    }
    

    다음과 같이 데이터베이스별 추가 구성 매개변수를 전달할 수 있습니다:

    pgbouncer['databases'] = {
      gitlabhq_production: {
         ...
         pool_mode: 'transaction'
      }
    }
    

    이 매개변수는 주의해서 사용하세요. 전체 매개변수 목록은 PgBouncer 설명서를 참조하세요.

  6. gitlab-ctl reconfigure를 실행합니다.

  7. Puma를 실행하는 노드에서 /etc/gitlab/gitlab.rb에 다음이 설정되어 있는지 확인합니다.

    gitlab_rails['db_host'] = 'PGBOUNCER_HOST'
    gitlab_rails['db_port'] = '6432'
    gitlab_rails['db_password'] = 'SQL_USER_PASSWORD'
    
  8. gitlab-ctl reconfigure를 실행합니다.

  9. 이 시점에서 인스턴스가 PgBouncer를 통해 데이터베이스에 연결해야 합니다. 문제가 있는 경우 트러블슈팅 섹션을 참조하세요.

백업#

PgBouncer 연결을 통해 GitLab을 백업하거나 복원하지 마세요. 이렇게 하면 GitLab 중단이 발생합니다.

이에 대한 자세한 내용과 백업 재구성 방법을 읽어보세요.

모니터링 활성화#

모니터링을 활성화하려면 모든 PgBouncer 서버에서 활성화해야 합니다.

  1. /etc/gitlab/gitlab.rb를 생성/편집하고 다음 구성을 추가합니다:

    # Enable service discovery for Prometheus
    consul['enable'] = true
    consul['monitoring_service_discovery'] =  true
    
    # Replace placeholders
    # Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z
    # with the addresses of the Consul server nodes
    consul['configuration'] = {
       retry_join: %w(Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z),
    }
    
    # Set the network addresses that the exporters will listen on
    node_exporter['listen_address'] = '0.0.0.0:9100'
    pgbouncer_exporter['listen_address'] = '0.0.0.0:9188'
    
  2. 구성을 컴파일하려면 sudo gitlab-ctl reconfigure를 실행합니다.

관리 콘솔#

Linux 패키지 설치에서는 PgBouncer 관리 콘솔에 자동으로 연결하는 명령이 제공됩니다. 콘솔과 상호 작용하는 방법에 대한 자세한 지침은 PgBouncer 설명서를 참조하세요.

세션을 시작하려면 다음을 실행하고 pgbouncer 사용자의 비밀번호를 제공합니다:

sudo gitlab-ctl pgb-console

인스턴스에 대한 기본 정보를 얻으려면:

pgbouncer=# show databases; show clients; show servers;
        name         |   host    | port |      database       | force_user | pool_size | reserve_pool | pool_mode | max_connections | current_connections
---------------------+-----------+------+---------------------+------------+-----------+--------------+-----------+-----------------+---------------------
 gitlabhq_production | 127.0.0.1 | 5432 | gitlabhq_production |            |       100 |            5 |           |               0 |                   1
 pgbouncer           |           | 6432 | pgbouncer           | pgbouncer  |         2 |            0 | statement |               0 |                   0
(2 rows)

 type |   user    |      database       | state  |   addr    | port  | local_addr | local_port |    connect_time     |    request_time     |    ptr    | link
| remote_pid | tls
------+-----------+---------------------+--------+-----------+-------+------------+------------+---------------------+---------------------+-----------+------
+------------+-----
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44590 | 127.0.0.1  |       6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x12444c0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44592 | 127.0.0.1  |       6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x12447c0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44594 | 127.0.0.1  |       6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x1244940 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44706 | 127.0.0.1  |       6432 | 2018-04-24 22:14:22 | 2018-04-24 22:16:31 | 0x1244ac0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44708 | 127.0.0.1  |       6432 | 2018-04-24 22:14:22 | 2018-04-24 22:15:15 | 0x1244c40 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44794 | 127.0.0.1  |       6432 | 2018-04-24 22:15:15 | 2018-04-24 22:15:15 | 0x1244dc0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44798 | 127.0.0.1  |       6432 | 2018-04-24 22:15:15 | 2018-04-24 22:16:31 | 0x1244f40 |
|          0 |
 C    | pgbouncer | pgbouncer           | active | 127.0.0.1 | 44660 | 127.0.0.1  |       6432 | 2018-04-24 22:13:51 | 2018-04-24 22:17:12 | 0x1244640 |
|          0 |
(8 rows)

 type |  user  |      database       | state |   addr    | port | local_addr | local_port |    connect_time     |    request_time     |    ptr    | link | rem
 ote_pid | tls
------+--------+---------------------+-------+-----------+------+------------+------------+---------------------+---------------------+-----------+------+----
--------+-----
 S    | gitlab | gitlabhq_production | idle  | 127.0.0.1 | 5432 | 127.0.0.1  |      35646 | 2018-04-24 22:15:15 | 2018-04-24 22:17:10 | 0x124dca0 |      |
  19980 |
(1 row)

PgBouncer 우회 절차#

Linux 패키지 설치#

일부 데이터베이스 변경 사항은 PgBouncer를 통하지 않고 직접 수행해야 합니다.

주로 영향을 받는 작업은 데이터베이스 복원데이터베이스 마이그레이션이 포함된 GitLab 업그레이드입니다.

  1. 기본 노드를 찾으려면 데이터베이스 노드에서 다음을 실행합니다:

    sudo gitlab-ctl patroni members
    
  2. 작업을 수행하는 애플리케이션 노드의 /etc/gitlab/gitlab.rb를 편집하고, gitlab_rails['db_host']gitlab_rails['db_port']를 데이터베이스 기본 서버의 호스트와 포트로 업데이트합니다.

  3. 재구성을 실행합니다:

    sudo gitlab-ctl reconfigure
    

작업이나 절차를 수행한 후 PgBouncer 사용으로 다시 전환합니다:

  1. /etc/gitlab/gitlab.rb를 PgBouncer를 가리키도록 다시 변경합니다.

  2. 재구성을 실행합니다:

    sudo gitlab-ctl reconfigure
    

Helm 차트 설치#

고가용성 배포도 Linux 패키지 기반 배포와 같은 이유로 PgBouncer를 우회해야 합니다. Helm 차트 설치의 경우:

  • 데이터베이스 백업 및 복원 작업은 toolbox 컨테이너에서 수행됩니다.
  • 마이그레이션 작업은 migrations 컨테이너에서 수행됩니다.

이러한 작업이 PostgreSQL에 직접 연결하고 실행할 수 있도록 각 서브차트에서 PostgreSQL 포트를 재정의해야 합니다:

파인 튜닝#

PgBouncer의 기본 설정은 대부분의 설치에 적합합니다. 특정 경우에는 성능 관련 및 리소스 관련 변수를 변경하여 처리량을 높이거나 데이터베이스에서 메모리 부족을 유발할 수 있는 리소스 사용을 제한할 수 있습니다.

공식 PgBouncer 설명서에서 매개변수와 해당 설명서를 찾을 수 있습니다. 아래는 Linux 패키지 설치에서 가장 관련성이 높은 매개변수와 기본값입니다:

  • pgbouncer['max_client_conn'] (기본값: 2048, 서버 파일 디스크립터 한도에 따라 다름) 이것은 PgBouncer의 "프론트엔드" 풀입니다: Rails에서 PgBouncer로의 연결.
  • pgbouncer['default_pool_size'] (기본값: 100) 이것은 PgBouncer의 "백엔드" 풀입니다: PgBouncer에서 데이터베이스로의 연결.

default_pool_size의 이상적인 수는 데이터베이스에 액세스해야 하는 모든 프로비저닝된 서비스를 처리하기에 충분해야 합니다. 필요한 풀 크기 계산에 대한 자세한 지침은 PostgreSQL 튜닝을 참조하세요.

내부 로드 밸런서와 함께 여러 PgBouncer를 사용하는 경우, default_pool_size를 인스턴스 수로 나누어 균등하게 분산된 부하를 보장할 수 있습니다.

pgbouncer['max_client_conn']은 PgBouncer가 수락할 수 있는 연결의 하드 한도입니다. 이 값을 변경할 필요는 거의 없습니다. 이 한도에 도달하는 경우 내부 로드 밸런서와 함께 추가 PgBouncer를 추가하는 것을 고려해 볼 수 있습니다.

Geo 추적 데이터베이스를 가리키는 PgBouncer의 한도를 설정할 때, Puma는 해당 데이터베이스에 간헐적으로만 액세스하므로 계산에서 제외할 수 있습니다.

트러블슈팅#

PgBouncer를 통해 연결하는 데 문제가 있는 경우 항상 먼저 로그를 확인하세요:

sudo gitlab-ctl tail pgbouncer

또한 관리 콘솔show databases 출력을 확인할 수 있습니다. 출력에서 gitlabhq_production 데이터베이스의 host 필드에 값이 있는지 확인합니다. 또한 current_connections가 1보다 커야 합니다.

메시지: LOG: invalid CIDR mask in address#

Geo 설명서의 제안된 수정 사항을 참조하세요.

메시지: LOG: invalid IP mask "md5": Name or service not known#

Geo 설명서의 제안된 수정 사항을 참조하세요.

번들 PgBouncer 서비스 사용

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

PgBouncer는 gitlab-ee 패키지에 번들로 포함되어 있으며 무료로 사용할 수 있습니다. PgBouncer는 장애 조치 시나리오에서 서버 간 데이터베이스 연결을 원활하게 마이그레이션하는 데 사용됩니다. GitLab Premium에는 /etc/gitlab/gitlab.rb를 통해 관리할 수 있는 번들 버전의 PgBouncer가 포함되어 있습니다.

Note

PgBouncer는 gitlab-ee 패키지에 번들로 포함되어 있으며 무료로 사용할 수 있습니다. 지원을 받으려면 Premium 구독이 필요합니다.

PgBouncer는 장애 조치 시나리오에서 서버 간 데이터베이스 연결을 원활하게 마이그레이션하는 데 사용됩니다. 또한 장애 허용이 필요하지 않은 설정에서 연결을 풀링하여 리소스 사용을 줄이면서 응답 시간을 향상시킬 수 있습니다.

GitLab Premium에는 /etc/gitlab/gitlab.rb를 통해 관리할 수 있는 번들 버전의 PgBouncer가 포함되어 있습니다.

장애 허용 GitLab 설치의 일부로서 PgBouncer#

이 내용은 새 위치로 이동되었습니다.

비장애 허용 GitLab 설치의 일부로서 PgBouncer#

  1. gitlab-ctl pg-password-md5 pgbouncer 명령으로 PGBOUNCER_USER_PASSWORD_HASH를 생성합니다.

  2. gitlab-ctl pg-password-md5 gitlab 명령으로 SQL_USER_PASSWORD_HASH를 생성합니다. 나중에 일반 텍스트 SQL_USER_PASSWORD를 입력합니다.

  3. 데이터베이스 노드에서 /etc/gitlab/gitlab.rb에 다음이 설정되어 있는지 확인합니다.

    postgresql['pgbouncer_user_password'] = 'PGBOUNCER_USER_PASSWORD_HASH'
    postgresql['sql_user_password'] = 'SQL_USER_PASSWORD_HASH'
    postgresql['listen_address'] = 'XX.XX.XX.Y' # Where XX.XX.XX.Y is the ip address on the node postgresql should listen on
    postgresql['md5_auth_cidr_addresses'] = %w(AA.AA.AA.B/32) # Where AA.AA.AA.B is the IP address of the pgbouncer node
    
  4. gitlab-ctl reconfigure를 실행합니다.

    [!note] 데이터베이스가 이미 실행 중이었다면 재구성 후 gitlab-ctl restart postgresql을 실행하여 재시작해야 합니다.

  5. PgBouncer를 실행하는 노드에서 /etc/gitlab/gitlab.rb에 다음이 설정되어 있는지 확인합니다.

    pgbouncer['enable'] = true
    pgbouncer['databases'] = {
      gitlabhq_production: {
        host: 'DATABASE_HOST',
        user: 'pgbouncer',
        password: 'PGBOUNCER_USER_PASSWORD_HASH'
      }
    }
    

    다음과 같이 데이터베이스별 추가 구성 매개변수를 전달할 수 있습니다:

    pgbouncer['databases'] = {
      gitlabhq_production: {
         ...
         pool_mode: 'transaction'
      }
    }
    

    이 매개변수는 주의해서 사용하세요. 전체 매개변수 목록은 PgBouncer 설명서를 참조하세요.

  6. gitlab-ctl reconfigure를 실행합니다.

  7. Puma를 실행하는 노드에서 /etc/gitlab/gitlab.rb에 다음이 설정되어 있는지 확인합니다.

    gitlab_rails['db_host'] = 'PGBOUNCER_HOST'
    gitlab_rails['db_port'] = '6432'
    gitlab_rails['db_password'] = 'SQL_USER_PASSWORD'
    
  8. gitlab-ctl reconfigure를 실행합니다.

  9. 이 시점에서 인스턴스가 PgBouncer를 통해 데이터베이스에 연결해야 합니다. 문제가 있는 경우 트러블슈팅 섹션을 참조하세요.

백업#

PgBouncer 연결을 통해 GitLab을 백업하거나 복원하지 마세요. 이렇게 하면 GitLab 중단이 발생합니다.

이에 대한 자세한 내용과 백업 재구성 방법을 읽어보세요.

모니터링 활성화#

모니터링을 활성화하려면 모든 PgBouncer 서버에서 활성화해야 합니다.

  1. /etc/gitlab/gitlab.rb를 생성/편집하고 다음 구성을 추가합니다:

    # Enable service discovery for Prometheus
    consul['enable'] = true
    consul['monitoring_service_discovery'] =  true
    
    # Replace placeholders
    # Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z
    # with the addresses of the Consul server nodes
    consul['configuration'] = {
       retry_join: %w(Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z),
    }
    
    # Set the network addresses that the exporters will listen on
    node_exporter['listen_address'] = '0.0.0.0:9100'
    pgbouncer_exporter['listen_address'] = '0.0.0.0:9188'
    
  2. 구성을 컴파일하려면 sudo gitlab-ctl reconfigure를 실행합니다.

관리 콘솔#

Linux 패키지 설치에서는 PgBouncer 관리 콘솔에 자동으로 연결하는 명령이 제공됩니다. 콘솔과 상호 작용하는 방법에 대한 자세한 지침은 PgBouncer 설명서를 참조하세요.

세션을 시작하려면 다음을 실행하고 pgbouncer 사용자의 비밀번호를 제공합니다:

sudo gitlab-ctl pgb-console

인스턴스에 대한 기본 정보를 얻으려면:

pgbouncer=# show databases; show clients; show servers;
        name         |   host    | port |      database       | force_user | pool_size | reserve_pool | pool_mode | max_connections | current_connections
---------------------+-----------+------+---------------------+------------+-----------+--------------+-----------+-----------------+---------------------
 gitlabhq_production | 127.0.0.1 | 5432 | gitlabhq_production |            |       100 |            5 |           |               0 |                   1
 pgbouncer           |           | 6432 | pgbouncer           | pgbouncer  |         2 |            0 | statement |               0 |                   0
(2 rows)

 type |   user    |      database       | state  |   addr    | port  | local_addr | local_port |    connect_time     |    request_time     |    ptr    | link
| remote_pid | tls
------+-----------+---------------------+--------+-----------+-------+------------+------------+---------------------+---------------------+-----------+------
+------------+-----
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44590 | 127.0.0.1  |       6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x12444c0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44592 | 127.0.0.1  |       6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x12447c0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44594 | 127.0.0.1  |       6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x1244940 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44706 | 127.0.0.1  |       6432 | 2018-04-24 22:14:22 | 2018-04-24 22:16:31 | 0x1244ac0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44708 | 127.0.0.1  |       6432 | 2018-04-24 22:14:22 | 2018-04-24 22:15:15 | 0x1244c40 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44794 | 127.0.0.1  |       6432 | 2018-04-24 22:15:15 | 2018-04-24 22:15:15 | 0x1244dc0 |
|          0 |
 C    | gitlab    | gitlabhq_production | active | 127.0.0.1 | 44798 | 127.0.0.1  |       6432 | 2018-04-24 22:15:15 | 2018-04-24 22:16:31 | 0x1244f40 |
|          0 |
 C    | pgbouncer | pgbouncer           | active | 127.0.0.1 | 44660 | 127.0.0.1  |       6432 | 2018-04-24 22:13:51 | 2018-04-24 22:17:12 | 0x1244640 |
|          0 |
(8 rows)

 type |  user  |      database       | state |   addr    | port | local_addr | local_port |    connect_time     |    request_time     |    ptr    | link | rem
 ote_pid | tls
------+--------+---------------------+-------+-----------+------+------------+------------+---------------------+---------------------+-----------+------+----
--------+-----
 S    | gitlab | gitlabhq_production | idle  | 127.0.0.1 | 5432 | 127.0.0.1  |      35646 | 2018-04-24 22:15:15 | 2018-04-24 22:17:10 | 0x124dca0 |      |
  19980 |
(1 row)

PgBouncer 우회 절차#

Linux 패키지 설치#

일부 데이터베이스 변경 사항은 PgBouncer를 통하지 않고 직접 수행해야 합니다.

주로 영향을 받는 작업은 데이터베이스 복원데이터베이스 마이그레이션이 포함된 GitLab 업그레이드입니다.

  1. 기본 노드를 찾으려면 데이터베이스 노드에서 다음을 실행합니다:

    sudo gitlab-ctl patroni members
    
  2. 작업을 수행하는 애플리케이션 노드의 /etc/gitlab/gitlab.rb를 편집하고, gitlab_rails['db_host']gitlab_rails['db_port']를 데이터베이스 기본 서버의 호스트와 포트로 업데이트합니다.

  3. 재구성을 실행합니다:

    sudo gitlab-ctl reconfigure
    

작업이나 절차를 수행한 후 PgBouncer 사용으로 다시 전환합니다:

  1. /etc/gitlab/gitlab.rb를 PgBouncer를 가리키도록 다시 변경합니다.

  2. 재구성을 실행합니다:

    sudo gitlab-ctl reconfigure
    

Helm 차트 설치#

고가용성 배포도 Linux 패키지 기반 배포와 같은 이유로 PgBouncer를 우회해야 합니다. Helm 차트 설치의 경우:

  • 데이터베이스 백업 및 복원 작업은 toolbox 컨테이너에서 수행됩니다.
  • 마이그레이션 작업은 migrations 컨테이너에서 수행됩니다.

이러한 작업이 PostgreSQL에 직접 연결하고 실행할 수 있도록 각 서브차트에서 PostgreSQL 포트를 재정의해야 합니다:

파인 튜닝#

PgBouncer의 기본 설정은 대부분의 설치에 적합합니다. 특정 경우에는 성능 관련 및 리소스 관련 변수를 변경하여 처리량을 높이거나 데이터베이스에서 메모리 부족을 유발할 수 있는 리소스 사용을 제한할 수 있습니다.

공식 PgBouncer 설명서에서 매개변수와 해당 설명서를 찾을 수 있습니다. 아래는 Linux 패키지 설치에서 가장 관련성이 높은 매개변수와 기본값입니다:

  • pgbouncer['max_client_conn'] (기본값: 2048, 서버 파일 디스크립터 한도에 따라 다름) 이것은 PgBouncer의 "프론트엔드" 풀입니다: Rails에서 PgBouncer로의 연결.
  • pgbouncer['default_pool_size'] (기본값: 100) 이것은 PgBouncer의 "백엔드" 풀입니다: PgBouncer에서 데이터베이스로의 연결.

default_pool_size의 이상적인 수는 데이터베이스에 액세스해야 하는 모든 프로비저닝된 서비스를 처리하기에 충분해야 합니다. 필요한 풀 크기 계산에 대한 자세한 지침은 PostgreSQL 튜닝을 참조하세요.

내부 로드 밸런서와 함께 여러 PgBouncer를 사용하는 경우, default_pool_size를 인스턴스 수로 나누어 균등하게 분산된 부하를 보장할 수 있습니다.

pgbouncer['max_client_conn']은 PgBouncer가 수락할 수 있는 연결의 하드 한도입니다. 이 값을 변경할 필요는 거의 없습니다. 이 한도에 도달하는 경우 내부 로드 밸런서와 함께 추가 PgBouncer를 추가하는 것을 고려해 볼 수 있습니다.

Geo 추적 데이터베이스를 가리키는 PgBouncer의 한도를 설정할 때, Puma는 해당 데이터베이스에 간헐적으로만 액세스하므로 계산에서 제외할 수 있습니다.

트러블슈팅#

PgBouncer를 통해 연결하는 데 문제가 있는 경우 항상 먼저 로그를 확인하세요:

sudo gitlab-ctl tail pgbouncer

또한 관리 콘솔show databases 출력을 확인할 수 있습니다. 출력에서 gitlabhq_production 데이터베이스의 host 필드에 값이 있는지 확인합니다. 또한 current_connections가 1보다 커야 합니다.

메시지: LOG: invalid CIDR mask in address#

Geo 설명서의 제안된 수정 사항을 참조하세요.

메시지: LOG: invalid IP mask "md5": Name or service not known#

Geo 설명서의 제안된 수정 사항을 참조하세요.