10GB 정도의 공유 메모리를 소비하고 있는 것 같은데, 종료한 프로세스로 판단됩니다 ctrl-C
.
$ free -h
total used free shared buff/cache available
Mem: 31Gi 706Mi 1.9Gi 10Gi 28Gi 19Gi
Swap: 4.0Gi 4.0Gi 0B
htop
다음은 메모리 사용량 비율을 기준으로 정렬된 출력입니다 .
이를 설명하는 프로세스는 없는 것 같습니다. 한번은 메모리 집약적인 프로그램을 실행한 적이 있지만 앞에서 언급했듯이 프로그램을 종료했습니다. 다시 실행하고 싶지만 메모리 문제로 인해 지금은 실행되지 않습니다. 또한, 확인해 보니
$ ipcs -a --human
------ Message Queues --------
key msqid owner perms size messages
------ Shared Memory Segments --------
key shmid owner perms size nattch status
0x00000000 13 kevin 600 4M 2 dest
0x00000000 48 kevin 600 4M 2 dest
0x00000000 49 kevin 600 64M 2 dest
------ Semaphore Arrays --------
key semid owner perms nsems
$
확실히 시스템을 재부팅할 수는 있지만 작동 중인 서버이고 백업을 부팅하기 위해 항상 물리적으로 액세스할 수 있는 것은 아닙니다. 이 메모리를 강제로 해제할 수 있는 방법이 있나요?
답변1
당신은 시도 할 수 있습니다:
sync
echo 3 > /proc/sys/vm/drop_caches
이렇게 하면 시스템 버퍼와 캐시가 지워집니다. 서버의 부하가 높지 않을 때 수행하는 것이 좋습니다.
답변2
이유를 알 수 있나요? 다음 내용은 미래의 다른 독자들에게 유용할 수 있습니다.
방금 메모리 사용량 조사를 마쳤습니다. df -h
시스템에서 사용하는 메모리를 살펴본 다음 tmpfs
실행 ps -eo pid,rss,trs,drs,comm
코드 이외의 메모리를 사용하여 출력을 Libre Calc에 복사했습니다. RSS보다 훨씬 크고 매뉴얼에는 ps
바이트 단위인지 킬로바이트 단위인지 다른 단위인지 나와 있지 않으므로 아무 소용이 없다고 생각하세요).
마지막으로 ~100Mb의 오류 마진을 조정했습니다.
available memory = total - sum (rss) - sum (used tmpfs).
ipcs
PS 공유 메모리의 경우 pid가 포함된 바이트가 출력되지 않고 하나만 출력된다는 사실에 놀랐 기 때문에 해당 부분을 건너뛰었습니다(적어도 지금은).