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 설정을 웹사이트 트래픽에 맞게 조정하는 것이 중요합니다.