로드 밸런싱 + 복제를 수행하는 2 개의 PostreSQL 9.5 백엔드 (4vCores, 8GB RAM)가있는 PgPool II 클러스터가 있습니다. 나의 유스 케이스는 단지 SSO- 로그인/등록을 제공하는 웹 사이트이며 상대적으로 작은 데이터베이스이며 쿼리는 매우 간단하지만 매우 높은 동시성 (수천 명의 동시 사용자)을 지원해야합니다.PgPool + PostgreSQL 클러스터에서 높은 동시성
백엔드를 추가하기 전에 현재 클러스터의 구성이 최적인지 확인하고 싶습니다. Pgbench (웹 사이트의 정상적인 동작을 시뮬레이트하는 일반적인 SELECT 쿼리)를 사용하여 일부 테스트를 실행하고 너무 많은 노력 (pgbench -c 64 -j 4 -t 1000 -f queries.sql)없이 연결 풀을 오버로드 할 수있었습니다. LB 및 백엔드에서 사용할 수있는 CPU/RAM이 많았습니다.
이 관련 설정과 같습니다 num_init_children 증가 II
listen_backlog_multiplier = 3
connection_cache = on
num_init_children = 62
max_pool = 4
child_life_time = 0
child_max_connections = 0
connection_life_time = 0
client_idle_limit = 0
PostgreSQL을
max_connections = 256
shared_buffers = 2GB
effective_cache_size = 6GB
work_mem = 8MB
maintenance_work_mem = 512MB
min_wal_size = 1GB
max_wal_size = 2GB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
pgPool/max_pool은 백엔드에서 MAX_CONNECTIONS을 높이기 위해 저를 강제로 , 그리고 그것은 추천하지 않는 것 같습니다. 어떤 제안? 감사!