반응형
nfs로 마운트한 파일시스템에 i/o가 다량으로 발생할 경우(예 : 서버아이스캔, 백신 스캔, find 명령어) 메모리 사용률(정확히는 캐시 메모리 중 slab영역)이 과도하게 증가한다.
리눅스의 커널, 디바이스 드라이버, 파일시스템 등은 inode, task구조체, 장치 구조체 등을 저장할때 Slab자료 구조를 사용하는데 파일을 사용할떄 마다 이 자료구조를 메모리에 적재하게 되며 그 결과 다량의 파일에 액세스하게 되면 이 Slab이라는 캐시 메모리 영역이 비정상적으로 높아지게 된다.
확인 방법
- cat /proc/meminfo | grep -i slab : 타 서버에 비해 비정상적으로 높은 slab메모리 사용을 확인할수 있다.
- cat /proc/meminfo | grep -i srclaimable : 회수 가능한 slab 메모리 사용량 확인 가능
- slabtop 명령어 시 타 서버에 비해 값들이 과도하게 높은 항목을 확인할 수 있다. ex) dentry, inode가 포함 된 항목 등등
해결 방법
- 기본적으로 가장 안전한 방법은 문제 원인을 중지시킨 후 그냥 기다리는것 뿐, 보통 아주 조금씩 메모리가 반환되다가 특정 시간마다 한번씩 크게 반환 된다.
- 아래 명령으로 반환 속도를 높일 수 있다. 단 정상적인 메모리 영역까지 반환을 야기할 수 있어 값이 너무 높으면 커널 패닉을 야기할수있다. 기본값은 100이며 10000까진 안전하다(끝났으면 기본값으로 변경)
#echo 10000 > /proc/sys/vm/vfs_cache_pressure 또는 sysctl vm.vfs_cache_pressure=10000
위에서 설정을 변경하는 것과 달리 단발성으로 캐시를 비우도록 할수있다. 단 캐시를 비우기 때문에 수행 전에 sync명령어를 통해 캐시 데이터를 저장 장치게 기록시켜야 하며 그렇게 한다고 해도 안전을 보장할순 없다.
#echo 1 > /proc/sys/vm/drop_caches : page cache(일반 캐시영역) 해제
#echo 2 > /proc/sys/vm/drop_caches : inode, dentry cache 해제
#echo 3 > /proc/sys/vm/drop_caches : page cache, inode, dentry cache 해제 (전체 캐시 삭제라 오래걸릴수도있음)
반응형
'Linux > Trouble shooting' 카테고리의 다른 글
coredump (0) | 2024.12.10 |
---|---|
서버 성능 모니터링 (0) | 2024.09.30 |
리눅스 NTP 연동이 되고 있음에도 시간이 안맞는 경우 (0) | 2024.09.30 |
리눅스에서 cpu,mem 사용률 증가원인 분석방법 (0) | 2024.09.30 |
리눅스에서 NFS를 통한 NAS 마운트 시 디렉토리 소유자 정상출력방법 (0) | 2024.09.30 |