MariaDB 쿼리 최적화 검토
- 슬로우 쿼리 로그 활성화 및 분석:
로그 분석:# 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 - 실행 중인 쿼리 확인:SHOW FULL PROCESSLIST;
- 쿼리 실행 계획 검토:EXPLAIN SELECT ... 쿼리문;
- 인덱스 추가 및 최적화:CREATE INDEX idx_name ON table_name(column_name);
- 캐시 설정 최적화:# my.cnf 파일 조정 query_cache_size = 64M query_cache_type = 1
PHP-FPM 프로세스 수 및 설정 조정
- 현재 PHP-FPM 풀 설정 확인:cat /etc/php/7.x/fpm/pool.d/*.conf
- 풀별 설정 최적화 (/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
- PHP 메모리 제한 조정:php_admin_value[memory_limit] = 256M
- 백그라운드 프로세스 수 조정:emergency_restart_threshold = 10 emergency_restart_interval = 1m
- PHP-FPM 재시작:sudo systemctl restart php7.x-fpm
서버 모니터링 도구 설정
- Netdata 설치(실시간 모니터링):
브라우저에서 http://서버IP:19999 접속bash <(curl -Ss https://my-netdata.io/kickstart.sh) - Monit 설치(서비스 자동 재시작):
/etc/monit/conf.d/mariadb설정 예시:sudo apt install monitcheck 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 - Prometheus + Grafana 설치(장기 모니터링):# Prometheus 설치 sudo apt install prometheus # Node Exporter 설치 sudo apt install prometheus-node-exporter # Grafana 설치 sudo apt install grafana
- Log rotation 설정 확인:sudo nano /etc/logrotate.d/nginx sudo nano /etc/logrotate.d/php-fpm
적절한 모니터링과 설정 조정으로 서버 성능을 개선할 수 있습니다. 부하가 가장 큰 MariaDB부터 최적화하고, PHP-FPM 설정을 웹사이트 트래픽에 맞게 조정하는 것이 중요합니다.