지난 포스팅에서는 서버의 숨통을 틔워주는 스왑(Swap) 설정을 알아봤습니다. 스왑(Swap)이 서버의 즉사를 막아주는 ‘보험’이라면 오늘은 한 발 더 나아가 DB 자체가 메모리를 덜 먹게 만드는 ‘체질 개선’ 방법을 다루겠습니다. 뭐, 한마디로 다이어트라는 거죠. 아니면 위고비나 마운자로?
512MB 라는 극한의 환경에서 MariaDB 순정 설정은 ‘자살 행위’와 같습니다.

핵심 파라미터 이해하기 : 왜 이 값을 바꿀까?
MariaDB를 설치하면 들어있는 기본 설정(Default)은 512MB 램 서버에게는 너무 무겁습니다. 특히 아래 항목들이 주범입니다.
- innodb_buffer_pool_size (데이터/인덱스 캐시): DB 엔진이 데이터,인덱스를 메모리에 쌓아 두는 공간입니다. 너무 크면 OS가 쓸 메모리까지 뺏어오고, 너무 작으면 디스크를 자주 읽어 느려짐. 512MB 서버에서는 “생존”을 위해 크게 줄여야 함
- performance_schema (성능 모니터링) : DB의 동작을 기록하는 도구. 켜져 있는것만으로도 메모리를 미리 점유해서 저사양 서버에서는 OFF 하는게 국룰임
- max_connections : 기본 151개는 저사양 서버를 즉사시킴
- key_buffer_size(MyISAM 인덱스 캐시) : 과거에 주로 쓰던 MyISAM 테이블을 위한 공간임. 요새는 대부분 InnoDB를 사용하므로 최소한으로 유지하면 됨
| 파라미터 | 기본값 | 최적화값 | 기대 효과 |
innodb_buffer_pool_size | 128MB | 64MB | RAM 고갈 방지 |
max_connections | 151 | 30 | 동시 접속 시 폭발 예방 |
key_buffer_size | 128MB | 8MB | 불필요한 자원 낭비 제거 |
메모리 다이어트 설정 (my.cnf)
/etc/mysql/mariadb.conf.d/50-server.cnf 파일을 열어 아래 내용을 수정하기 전에 기존 설정을 확인해봅시다.
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE 'performance_schema';
SHOW VARIABLES LIKE 'key_buffer_size';

[mysqld]
# 저사양 서버를 위한 다이어트 설정
innodb_buffer_pool_size = 64M
max_connections = 30
key_buffer_size = 8M

수정 후 sudo systemctl restart mariadb 명령어로 재시작합니다.

결과: 가벼워진 MariaDB

“최적화 후 RES(실질 점유 메모리)가 61732(약 60MB)인 것을 확인할 수 있습니다. 설치 직후 66MB 이상이었던 것에 비해 오버헤드를 약 10% 이상 걷어냈습니다. 이제 남은 메모리는 웹 서버(Nginx)나 PHP-FPM이 더 원활하게 사용할 수 있게 되었습니다.”
💡엔지니어의 참견 : ‘안정성’이 우선
단순히 수치를 바꾸는 것보다 중요한 것은 내 서버의 한계를 아는 것입니다. 아래 수식을 기억하세요. 512MB 서버에서 이 합계가 램 용량을 넘어서는 순간, 서버는 다시 죽습니다.
Total_Memory = Buffer_Pool + (Connections * Thread_Buffers)