높은 비율의 메모리를 소비하는 프로세스를 찾을 수 없습니다.

높은 비율의 메모리를 소비하는 프로세스를 찾을 수 없습니다.

여기에 높은 메모리 사용량 경고(전체 메모리의 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에서 차감됩니다.

관련 정보