이온디
호스팅센터
웹디벨로퍼
프리랜서카페
스레드
현재글(MariaDB 쿼리 최적화 검토})

MariaDB 쿼리 최적화 검토

  1. 슬로우 쿼리 로그 활성화 및 분석:
    # my.cnf 파일에 추가
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/mariadb-slow.log
    long_query_time = 1  # 1초 이상 걸리는 쿼리 기록
    로그 분석:
    mysqldumpslow -s t /var/log/mysql/mariadb-slow.log
  2. 실행 중인 쿼리 확인:
    SHOW FULL PROCESSLIST;
  3. 쿼리 실행 계획 검토:
    EXPLAIN SELECT ... 쿼리문;
  4. 인덱스 추가 및 최적화:
    CREATE INDEX idx_name ON table_name(column_name);
  5. 캐시 설정 최적화:
    
    # my.cnf 파일 조정
    query_cache_size = 64M
    query_cache_type = 1

PHP-FPM 프로세스 수 및 설정 조정

  1. 현재 PHP-FPM 풀 설정 확인:
    cat /etc/php/7.x/fpm/pool.d/*.conf
  2. 풀별 설정 최적화 (/etc/php/7.x/fpm/pool.d/사이트명.conf):
    
    ; 프로세스 관리 최적화
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    
    ; 타임아웃 설정
    request_terminate_timeout = 300s
  3. PHP 메모리 제한 조정:
    
    php_admin_value[memory_limit] = 256M
  4. 백그라운드 프로세스 수 조정:
    
    emergency_restart_threshold = 10
    emergency_restart_interval = 1m
  5. PHP-FPM 재시작:
    sudo systemctl restart php7.x-fpm

서버 모니터링 도구 설정

  1. Netdata 설치(실시간 모니터링):
    bash <(curl -Ss https://my-netdata.io/kickstart.sh)
    브라우저에서 http://서버IP:19999 접속
  2. Monit 설치(서비스 자동 재시작):
    sudo apt install monit
    /etc/monit/conf.d/mariadb설정 예시:
    
    
    check process mariadb with pidfile /var/run/mysqld/mysqld.pid
      start program = "/etc/init.d/mysql start"
      stop program = "/etc/init.d/mysql stop"
      if cpu > 80% for 5 cycles then alert
      if memory > 80% for 5 cycles then restart
  3. Prometheus + Grafana 설치(장기 모니터링):
    # Prometheus 설치
    sudo apt install prometheus
    
    # Node Exporter 설치
    sudo apt install prometheus-node-exporter
    
    # Grafana 설치
    sudo apt install grafana
  4. Log rotation 설정 확인:
    sudo nano /etc/logrotate.d/nginx
    sudo nano /etc/logrotate.d/php-fpm

적절한 모니터링과 설정 조정으로 서버 성능을 개선할 수 있습니다. 부하가 가장 큰 MariaDB부터 최적화하고, PHP-FPM 설정을 웹사이트 트래픽에 맞게 조정하는 것이 중요합니다.

 


내용을 입력하세요
0