1. PHP
단체메일을 발송하는데 시간이 오래 걸려 메모리 리밋을 올렸습니다.
php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 1024M
2. MySQL의 InnoDB Buffer Pool
/etc/my.cnf 또는 /etc/mysql/my.cnf 수정
[mysqld]
# -------------- 메모리 관련 최적화 --------------
innodb_buffer_pool_size = 20G # 전체 RAM의 30~35% (InnoDB 데이터 캐싱)
innodb_log_file_size = 512M # InnoDB 로그 파일 크기
innodb_log_buffer_size = 64M # InnoDB 로그 버퍼 크기
innodb_flush_log_at_trx_commit = 1 # 트랜잭션 안정성 확보
# -------------- 연결 및 쿼리 성능 최적화 --------------
max_connections = 300 # 동시 접속자 수 제한
thread_cache_size = 100 # 스레드 캐시 최적화
table_open_cache = 8000 # 테이블 캐시 개수 증가
query_cache_type = 0 # Query Cache는 비활성화 (MariaDB에서는 비효율적)
# -------------- 임시 테이블 및 정렬 최적화 --------------
tmp_table_size = 256M
max_heap_table_size = 256M
sort_buffer_size = 4M
join_buffer_size = 8M
# -------------- 기타 성능 최적화 --------------
key_buffer_size = 512M # MyISAM 테이블이 있다면 적절한 값 설정
read_buffer_size = 4M
read_rnd_buffer_size = 8M
sudo systemctl restart mariadb
3. Redis 캐시
현재 레디스가 사용하는 메모리 확인 명령어
redis-cli info memory | grep used_memory_human
> used_memory_human:908.60M