<aside> ProxySQL은 앱과 DB 사이에서 proxy 역할을 하며 로드 밸런싱, 쿼리 라우팅, 연결 관리, 장애 조치 등 다양한 기능을 제공하여 대규모 데이터베이스 환경에서 중요한 역할을 합니다.

</aside>

image.png

ProxySQL에서 최대한 많은 동시 요청을 처리하도록 설정하려면 다음과 같은 조치를 취할 수 있습니다. 이러한 조치는 MySQL의 max_connections 값을 변경하지 않고도 동시 요청을 효율적으로 처리하는 데 도움이 됩니다.

1. mysql-max_connections 설정

ProxySQL에서 MySQL 과의 연결을 관리하는 최대 연결 수를 설정합니다. ProxySQL이 MySQL의 최대 연결 수를 초과하지 않도록 합니다.

ProxySQL 설정 파일 수정

  1. 설정 파일 열기: ProxySQL 설정 파일(/etc/proxysql.cnf 또는 사용자 정의 경로)을 엽니다.

  2. mysql-max_connections 설정 추가:

    ini코드 복사
    mysql-max_connections = 151
    
  3. ProxySQL 재시작: 설정 파일을 수정한 후, ProxySQL 서비스를 재시작하여 변경 사항을 적용합니다.

    bash코드 복사
    sudo systemctl restart proxysql
    

ProxySQL Admin 인터페이스 사용

  1. ProxySQL Admin 인터페이스에 접속:

    bash코드 복사
    mysql -u admin -p -h 127.0.0.1 -P 6032
    
  2. global_variables 테이블 수정:

    sql코드 복사
    UPDATE global_variables SET variable_value='151' WHERE variable_name='mysql-max_connections';
    LOAD MYSQL VARIABLES TO RUNTIME;
    SAVE MYSQL VARIABLES TO DISK;
    

2. 커넥션 풀링 최적화

ProxySQL에서 커넥션 풀링을 통해 MySQL 과의 연결을 재사용하여 연결 오버헤드를 줄일 수 있습니다.

  1. 커넥션 풀 설정 확인:

    sql코드 복사
    SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-conn_pool%';
    
  2. 최대 연결 수 증가: 필요에 따라 mysql-conn_pool_size를 조정하여 커넥션 풀 크기를 늘립니다.

    sql코드 복사
    UPDATE global_variables SET variable_value='100' WHERE variable_name='mysql-conn_pool_size';
    LOAD MYSQL VARIABLES TO RUNTIME;
    SAVE MYSQL VARIABLES TO DISK;
    

3. 배압(Backpressure) 적용