SharedIT | 묻고 답하기(AMP)

DB서버 메모리 점유율 관련 질문드립니다.

자빅스 모니터링 중에 해당 디비서버에 스왑메모리 부족 현상을 확인하여

보았더니 메모리가 거의 다 찬상태입니다.  

프로세스 점유율을 보니 MYSQL이 약 93% 정도 차지 하고있고 이에 쿼리등의 실행 상태를 보니

현재 실행중인 쿼리는 없습니다.

현제 디비서버 메모리는 32G Swap은 1G입니다.

튜닝을 하면 괜찮아 질지 아니면 메모리 증설을 해야할지 아니면 다른 방법이 있는지

알고싶습니다. 관련하여 어드바이스좀 부탁드립니다.

(기존 설계자는 한참전에 퇴사를 하여 왜 저렇게 설계가 되었는지 모르는 상태입니다 또한, 다른 서버의 경우

 Swap이 용량이 저렇게 적게 잡혀있지는 않습니다.)

Tags : 태그가 없습니다.

4개의 답변이 있습니다.

Genghis Khan
  0 추천 | 3년 이하 전

Swap 메모리를 반환하는건 어떨까요?

# swapoff -a && swapon -a


간접적으로 crontab으로 주기적으로 

실행하여 반환하는것도 괜찮을것 같구요

loveoove | 3년 이하 전

반환은 한 번씩 진행합니다..


다만 mysql이 메모리를 너무 많이 잡아 먹어서 


그 원인을 찾기가 힘드네요

wansoo
  0 추천 | 3년 이하 전

스왑 메모리를 사용한다는 건, innodb buffer pool에 할당된 메모리가 부족하기 때문인걸로 보이고요.

innodb_buffer_pool_size가 어떻게 되는지 확인해 보시고, 사이즈 조정을 해 주는게 필요할 것 같네요.


innodb buffer pool 사이즈 확인은 아래 명령으로 확인해 보면 될 것 같고요.

mysql> select @@innodb_buffer_pool_size;


innodb buffer pool 사이즈 변경하는 명령은


mysql> set global innodb_buffer_pool_size = 변경할사이즈;

와 같이 명령을 주면 되겠고요.


예를 들어 20기가로 조정한다면...

set global innodb_buffer_pool_size = 21474836480;

으로 명령을 주면 될 것 같고요.



스왑 메모리 초기화는...

쉘에서 root 권한으로

swapoff -a && swapon -a


명령을 실행 시켜주면 되겠고요.


swapoff 명령이 실패된다면...

mysql 서비스를 중단 시켜 주고 실행해 줘야 되겠고요.

loveoove | 3년 이하 전

inno_buffer_size는 8G입니다.


물리메모리 32기가 일때 부족한가여?


그런데 궁굼한점이 지금 32g중 30g사용중인데 사이즈를 늘리더라도

타격이없까요?

wansoo | 3년 이하 전

12~16기가 정도로 늘려서 비교 검토해 본 후에 추가 조취를 취하는게 좋지 않을까 싶어 보이네요.

32기가 중에 30기가를 사용하고 있다해서 실제적으로 30기가를 모두 사용하고 있다고 볼 수는 없을 것 같아 보이네요.

리눅스에서 시스템이 기본적으로 미리 확보해 두고 사용하는 메모리가 있는 것 같고...

물리적으로 메모리를 몇배 더 증설하더라도 일정시간이 지난 후에 측정해 보면, 남아 있는 메모리 량이 비슷하게 표시 되지 않을까 싶어 보이고요.

차바라기
  0 추천 | 3년 이하 전

안되면 리부팅으로 메모리 점유율을 낮추는 방법으로 해보세요~어쩔수 없는거 같아용

빨간신발
  0 추천 | 3년 이하 전

저하고 비슷한 상황이네요..

물리 메모리는 남는데...

왜 swap을 써서 swap 사용량이 올리는지..

swap 한번 올라가면 다시 내려오지를 않네요..

그냥 써요.. ㅋㅋ