Mysqld 의 메모리가 증가 합니다.
규칙적으로 증가 하지는 않지만 조금씩 증가 하고 있습니다.
특정 작업 후 Mysql이 사용한 메모리를 시스템에 반환하지 않고 자신이 가지고 있는 것 같습니다.
이대로 메모리가 계속 증가 할지 아니면 어느정도 수준 까지만 올라갈지 궁금 합니다.
답변 부탁 드립니다.
MySQL은 메모리를 다음과 같은 용도로 활용합니다.
- 조인 / 정렬 용 버퍼
- 쿼리 결과 캐시을 위한 버퍼
- 사용하고 내리지 않은 데이터(페이지)들에 대한 버퍼
등 다양하게 활용되고, 이 중 몇몇은 클라이언트 연결 수 만큼 발생하게 됩니다.
따라서, 접속 수가 최대 연결 수 만큼 증가될 때 까지, 그리고 허용된 데이터 캐시가 가득 찰 때까지는 지속적으로 메모리 사용량이 늘어날 수 있습니다.
답변 감사 합니다.
현재 운영중인 서버의 접속 수는 많지 않습니다. 10~13 정도를 유지 합니다.
허용된 데이터 캐시가 가득 찰 때 까지라고 하셨는데
그렇다면 혹시 mysql 이 사용하는 데이터 캐시의 사이즈를 제한 할 수 있는지요?
서버가 DB 전용 서버가 아닌지라 mysql이 메모리를 전부 차지한다면 재앙입니다.
답변 부탁 드리겠씁니다.
자세한 내용은 다음과 같습니다.
http://dev.mysql.com/doc/refman/5.0/en/memory-use.html
mysqlkorea의 한국어 번역 :
http://www.mysqlkorea.co.kr/sub.html?mcode=manual&scode=01&m_no=21503&cat1=7&cat2=220&cat3=262&lang=k (번역에 오류가 좀 있습니다)
Tuning primer 등을 통해 간략한 리포트를 보시는 것도 좋겠습니다.
https://launchpad.net/mysql-tuning-primer
Tuning Primer를 이용하여 확인 해 본 결과 아래 처럼 메모리 관련 설정이 나왔습니다.
MEMORY USAGE Max Memory Ever Allocated : 42 M Configured Max Per-thread Buffers : 268 M Configured Max Global Buffers : 17 M Configured Max Memory Limit : 286 M Physical Memory : 2.96 G Max memory limit seem to be within acceptable norms
그럼 MYSQL 서버가 286M 까지만 사용하는 건가요??
네, 그렇다고 볼 수 있습니다만, 메모리는 결국 페이지 단위로 allocation되기 때문에 바이트 레벨까지 정확한 결과는 아닙니다.
단, 대략적인 크기를 아는 용도로 활용될 수 있다고 봅니다.