공유 메모리 강제 해제

공유 메모리 강제 해제

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).

ipcsPS 공유 메모리의 경우 pid가 포함된 바이트가 출력되지 않고 하나만 출력된다는 사실에 놀랐 기 때문에 해당 부분을 건너뛰었습니다(적어도 지금은).

관련 정보