여기에 높은 메모리 사용량 경고(전체 메모리의 95%가 사용 중)가 있는 서버가 있지만 해당 서버가 어디에 사용되고 있는지 찾을 수 없습니다. Java 프로세스는 전체 메모리의 62%를 소비하는데, 버퍼링/캐싱에는 사용되지 않지만 나머지 절반은 어디에 있는지 찾을 수 없습니다.
[user@server ~]$ free -m
total used free shared buff/cache available
Mem: 11203 10832 138 2 231 106
Swap: 48639 1338 47301
[user@server ~]$
top - 02:54:33 up 82 days, 3:51, 1 user, load average: 10.14, 9.91, 9.72
Tasks: 253 total, 1 running, 123 sleeping, 0 stopped, 0 zombie
%Cpu(s): 67.8 us, 1.7 sy, 0.0 ni, 30.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
GiB Mem : 99.1/10.9 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ]
GiB Swap: 2.8/47.5 [||| ]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17177 root 20 0 14.1g 6.8g 11.4m S 826.9 62.5 4543:35 java
18518 root 20 0 7735.9m 196.6m 0.0m S 0.0 1.8 65:35.73 java
20307 root 20 0 569.8m 26.4m 9.1m S 0.7 0.2 1:12.77 gc-fastpath
26954 SRV_Lin+ 20 0 343.0m 25.5m 0.0m S 0.3 0.2 44:05.60 splunkd
23541 guardic+ 20 0 407.5m 9.4m 6.4m S 0.0 0.1 13:10.17 gc-guardig
13449 root 20 0 224.1m 5.1m 2.9m S 0.0 0.0 59:39.38 snmpd
10558 root 20 0 157.7m 4.6m 3.2m S 0.0 0.0 0:00.03 sshd
1764 root 20 0 190.9m 4.5m 2.0m S 0.0 0.0 58:08.11 vmtoolsd
27200 ladmsrv+ 20 0 158.4m 4.5m 3.7m R 0.0 0.0 0:00.08 top
19229 guardic+ 20 0 281.3m 3.5m 0.3m S 0.3 0.0 16:31.04 gc-guest-agent
934 root 20 0 102.8m 3.4m 3.2m S 0.0 0.0 1:33.63 systemd-journal
10667 ladmsrv+ 20 0 112.9m 3.1m 2.6m S 0.0 0.0 0:00.00 bash
1 root 20 0 123.9m 3.1m 1.2m S 0.0 0.0 20:09.97 systemd
10666 ladmsrv+ 20 0 157.7m 2.7m 1.4m S 0.0 0.0 0:00.01 sshd
2046 root 20 0 560.8m 2.5m 0.0m S 0.0 0.0 8:43.78 tuned
[user@server ~]$ cat /proc/meminfo
MemTotal: 11471940 kB
MemFree: 148316 kB
MemAvailable: 113900 kB
Buffers: 4912 kB
Cached: 130952 kB
SwapCached: 206420 kB
Active: 6478044 kB
Inactive: 1104480 kB
Active(anon): 6405872 kB
Inactive(anon): 1043240 kB
Active(file): 72172 kB
Inactive(file): 61240 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 49807356 kB
SwapFree: 48438780 kB
Dirty: 236 kB
Writeback: 0 kB
AnonPages: 7435712 kB
Mapped: 65588 kB
Shmem: 2444 kB
Slab: 3337628 kB
SReclaimable: 99628 kB
SUnreclaim: 3238000 kB
KernelStack: 9872 kB
PageTables: 25980 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 55543324 kB
Committed_AS: 9062736 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 5253120 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 864128 kB
DirectMap2M: 11161600 kB
DirectMap1G: 1048576 kB
답변1
tmpfs와 같은 메모리 기반 파일 시스템이 마운트되어 있는지, 거기에 많은 데이터가 있는지 확인하십시오. 예를 들어, Fedora는 꽤 오랫동안 /tmp에 tmpfs를 사용해 왔으며, 이는 임시 파일이 많으면 메모리 부족을 설명할 수 있습니다.
예를 들면 다음과 같습니다.
$ mount | grep tmpfs
devtmpfs on /dev type devtmpfs (rw,relatime,seclabel,size=32896392k,nr_inodes=8224098,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=49396572k)
tmpfs on /var/tmp type tmpfs (rw,nosuid,nodev,relatime,seclabel)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=6586208k,mode=700,uid=1000,gid=1000)
$ df /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 49396572 91052 49305520 1% /tmp
위의 " " 이 Used
(가) 여유 RAM에서 차감됩니다.