내 기억에 이상한 일이 일어났습니다.
나는 Ubuntu 14.04 서버와 Zimbra 8.6을 가지고 있으며 커널(이 서버의 경우)은 3.13.0-37-generic입니다. 하지만 다른 커널에서 문제를 본 적이 있습니다.
메모리 및 스왑 공간이 가득 찼습니다.
$ free
total used free shared buffers cached
Mem: 6112624 5991208 121416 88 4752 79224
-/+ buffers/cache: 5907232 205392
Swap: 3905532 3624768 280764
짐브라가 내 기억을 다 먹어치우는 줄 알았는데 이상하게도 그렇지 않은 것 같다.
# ps -A --sort -rss -o comm,pmem | head -n 11
COMMAND %MEM
java 10.6
clamd 4.7
mysqld 3.0
java 2.0
slapd 1.2
/opt/zimbra/ama 1.1
/opt/zimbra/ama 1.0
/opt/zimbra/ama 1.0
/opt/zimbra/ama 1.0
/opt/zimbra/ama 0.9
내 모든 프로세스는 메모리의 절반을 차지합니다. 내 버퍼와 캐시는 거의 아무것도 차지하지 않습니다.
Zimbra를 중지해도 여전히 3.5GB가 사용됩니다.
# ps -A --sort -rss -o comm,pmem | head -n 12
COMMAND %MEM
bash 0.0
bash 0.0
bash 0.0
sudo 0.0
rsyslogd 0.0
http 0.0
http 0.0
htop 0.0
init 0.0
ps 0.0
다시 시작한 후에는 200Mb 미만의 메모리가 사용됩니다.
서버는 139일 동안 실행되었고, 메모리 사용량은 매일 조금씩 증가했습니다.
그래서 내 질문은: 무엇이 모든 메모리를 차지합니까?
1을 편집하고 몇 가지 정보를 추가합니다.
$ ls -l /dev/shm
lrwxrwxrwx 1 root root 8 mai 2 12:46 /dev/shm -> /run/shm
$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 3051744 4 3051740 1% /dev
tmpfs 611260 496 610764 1% /run
/dev/sda2 14287344 2765996 10772548 21% /
none 4 0 4 0% /sys/fs/cgroup
none 5120 0 5120 0% /run/lock
none 3056288 0 3056288 0% /run/shm
none 102400 0 102400 0% /run/user
재부팅 후 (Zimbra 시작):
$ free
total used free shared buffers cached
Mem: 6112576 5712908 399668 832 237892 1829424
-/+ buffers/cache: 3645592 2466984
Swap: 3905532 0 3905532
RAM의 일부 그래프(12시 30분경에 서버를 다시 시작했습니다):
두 번째 그래프는 다음 결과를 보여줍니다.
ps aux |awk '{s+=$4} END {print s}'
셋째, 결과:
smem -tw |grep -v Area | sed 's/ //;s/ //'
답변1
은닉처.
좋은 요약이 있습니다http://www.linuxatemyram.com/.
Linux는 디스크 캐싱을 위해 사용되지 않은 메모리를 빌려옵니다. 이렇게 하면 메모리가 부족한 것처럼 보이지만 그렇지 않습니다! 다 괜찮아요!
캐시를 지우려면 루트로 이 명령을 사용하고 결과적인 메모리 사용량을 관찰하십시오.
echo 3 > /proc/sys/vm/drop_caches