참조 : https://www.webcomand.com/docs/admin_guide/configuration/mysqlmariadb/
클라우드 서버에 mariadb 애플리케이션을 운용하고있는데 ,
서버에서 차지하고있는 메모리가 조금씩 늘어가고 있는 현상이 포착되었다.
사용중인 서버 스펙은 4 / 16 (cpu / ram) 이고 ,
mariadb 애플리케이션 외엔 어떠한 애플리케이션 or 컨테이너가 존재하지않는다 .
이 상태가 유지된다면 서버의 메모리를 다 소모하여 서버가 정상적으로 유지되지 못할 거라고 예상했기 떄문에 ,
해결방안 및 원인 파악을 시작했다.
show variables like '%version%';
mariadb application 이 최적화된 malloc 라이브러리를 사용하지않고 ,
시스템 (OS ) 에서 기본으로 제공하는 기본 malloc 을 사용하고있었다.
웹에서 서칭한 바로는 malloc 함수가 제대로 메모리를 반환 하지않기때문에
TC Malloc(구글) 또는 je malloc(facebook) 같이 최적화가 잘 되어있는 라이브러리를 사용해야만 누수현상이 해결 된다고한다.
밑으로는 TC Malloc 을 을 mariadb 에설정하는 과정이다.
TC Malloc은 개별로 제공되지않기때문에 yum 패키지관리자를 통하여 통째로다운로드 후 그안에있는 라이브러리를 사용한다.
1. yum install gperftools (RHEL)
2. find /usr/lib64 -name "libtcmalloc*"
tc malloc 이 (/usr/lib64) 에 잘 존재하는지 확인한다.
3. systemd로 maraidb 를 관리하고있기떄문에 systemd 경로로 접근하여 mariadb 시스템 서비스 파일을 수정하였다.
4. service 설정파일을 수정해주었으니
기동중인 mariadb service 를 멈추고 설정을 재 로딩 해주고 mariadb service 를 재시작해준다.
4-1 : systemctl stop mariadb.servcie
4-2 : systemctl daemon-reload
4-3 : systemctl start mariadb.service
5. mariadb application 에서
SHOW GLOBAL VARIABLES LIKE 'version_malloc_library';
를 실행하여 TC malloc 라이브러리가 잘 적용 되었는지 확인한다.
6. 추후 며칠간 ram 을 모니터링 하며 누수 문제가 재발 하는지 확인
메모리 반환이 되지 않는 이슈가 해결된것을 확인
'DB > mysql | mariadb' 카테고리의 다른 글
my.cnf 설정파일 (2) | 2024.10.30 |
---|