Linux 서버가 비정상적으로 작동함

Linux 서버가 비정상적으로 작동함

다음 스크립트를 실행했습니다.

ps --no-headers -eo user,rss | awk '{arr[$1]+=$2}; END {for (i in arr) {print i,arr[i]/1024/1024}}' | sort -nk2 -r

메모리 사용량은 약 12GB로 표시되지만 top 명령을 실행하면 총 메모리는 66GB, 사용된 메모리는 63GB, 여유 메모리는 3GB로 표시됩니다.

위 수치는 대략적인 수치입니다. 다음은 명령을 사용하여 비슷한 숫자를 보여주는 업데이트입니다 free -m.

             total       used       free     shared    buffers     cached
Mem:         64521      64087        433          0       2071      51567

-/+ buffers/cache:      10449      54072
Swap:        63999          1      63998

위 명령에서 12GB가 사용되었다고 표시되는데 왜 63GB가 사용됩니까?

내 서버가 제대로 작동하지 않습니다. top 명령에 따라 사용 가능한 메모리가 부족하면 프로세스가 중단되기 시작합니다.

이는 66GB RAM을 탑재하고 Oracle Enterprise Linux 6.3 64비트(기본적으로 Red Hat)를 실행하는 HP 서버입니다.

어떤 단서가 있나요?

답변1

서버가 이상하게 동작하지 않습니다. 출력을 해석하는 방법에 실수가 있었습니다 free. 바라보다https://serverfault.com/questions/85470/meaning-of-the-buffers-cache-line-in-the-output-of-free: "buffer" 및 "cached"는 메모리가 "사용 중"임을 지정하지만 캐시는 즉시 삭제할 수 있습니다. 이것이 "버퍼"와 "캐시"가 애플리케이션에 실제로 사용 가능한 메모리 양에 포함되는 이유입니다.

http://thoughtsbyclayg.blogspot.com/2008/09/display-free-memory-on-linux-ubuntu.html설명하다

"얼마나 많은 메모리가 실제로 사용 가능한지"를 고려할 때 다음과 같이 계산하고 싶습니다.
"사용 가능" + ("버퍼" + "캐시됨")

귀하의 예에서는 애플리케이션에 사용할 수 있는 메모리가 54GB입니다.

관련 정보