답변:
이전 답변을 결합하는 것이 좋습니다
watch -n 5 free -m
리눅스는 여분의 메모리를 사용하여 하드 드라이브 블록 을 캐시 하는 것을 좋아한다 . 그래서 당신은 단지 무료를보고 싶지 않습니다 Mem
. 행 의 free
열 을 보려고 -/+ buffers/cache:
합니다. 응용 프로그램에서 사용할 수있는 메모리 양을 보여줍니다. 그래서 나는 방금 달려서 free -m
이것을 얻었습니다.
total used free shared buffers cached
Mem: 3699 2896 802 0 247 1120
-/+ buffers/cache: 1528 2170
Swap: 1905 62 1843
1528MB를 사용 하고 있으며 2170MB의 여유 공간 이 있다는 것을 알고 있습니다.
참고 : 이주기를 중단하려면 +를 watch
누르십시오 .CtrlC
Mem: used
사용 된 총 메모리입니다. -/+ buffers/cache: used
사용 된 총 메모리 에서 버퍼와 캐시를 뺀 값 입니다. 출력이 재미있어 보이지만 여기에는 산술이 필요하지 않습니다. -/ + buffers / cache 행에서 used / free를 찾고 있습니다.
free -h
예 watch -n 5 free -h
를 들어 , 출력 2.1G
대신 "사람이 읽을 수있는"출력을 얻으려면을 수행 하면 됩니다 2170
.
htop
최선의 해결책 이라고 생각 합니다.
sudo apt-get install htop
이 방법으로 어떤 프로그램이 대부분의 RAM을 사용하고 있는지 알 수 있습니다. 원하는 경우 쉽게 종료 할 수 있습니다. 스크린 샷이 있습니다!
htop
"그래픽"이고 읽기보다는 쉬워서 좋습니다 free
.
RES
MB에 해당 응용 프로그램에 의해 사용되는 메모리는? 무엇 SHR
입니까?
htop
'일정 기간 동안의 메모리 사용량'을 어떻게 표시합니까?
실행중인 각 프로세스에서 사용되는 메모리의 좋은 분류를 찾고 있다면 ps_mem.py ( 여기 에서 pixelbeat.org에 있음)를 확인하는 것이 좋습니다 .
위의 의견에서 무료 로 한 줄짜리 스냅 샷을 원한다고 언급 했지만 다른 사람들이 이것이 유용하다고 생각했습니다.
출력 예 :
user@system:~$ sudo ps_mem.py
[sudo] password for user:
Private + Shared = RAM used Program
4.0 KiB + 7.5 KiB = 11.5 KiB logger
4.0 KiB + 8.0 KiB = 12.0 KiB mysqld_safe
4.0 KiB + 10.0 KiB = 14.0 KiB getty
4.0 KiB + 42.0 KiB = 46.0 KiB saslauthd (5)
48.0 KiB + 13.0 KiB = 61.0 KiB init
56.0 KiB + 27.5 KiB = 83.5 KiB memcached
84.0 KiB + 26.5 KiB = 110.5 KiB cron
120.0 KiB + 50.0 KiB = 170.0 KiB master
204.0 KiB + 107.5 KiB = 311.5 KiB qmgr
396.0 KiB + 94.0 KiB = 490.0 KiB tlsmgr
460.0 KiB + 65.0 KiB = 525.0 KiB rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB sudo
476.0 KiB + 83.0 KiB = 559.0 KiB monit
568.0 KiB + 60.0 KiB = 628.0 KiB freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB pickup
1.1 MiB + 80.0 KiB = 1.2 MiB bash
1.4 MiB + 308.5 KiB = 1.7 MiB fail2ban-server
888.0 KiB + 1.0 MiB = 1.9 MiB sshd (3)
1.9 MiB + 32.5 KiB = 1.9 MiB munin-node
13.1 MiB + 86.0 KiB = 13.2 MiB mysqld
147.4 MiB + 36.5 MiB = 183.9 MiB apache2 (7)
---------------------------------
208.1 MiB
=================================
Private + Shared = RAM used Program
내가 싫어하는 유일한 부분은 스크립트가 루트 권한을 요구한다고 주장한다는 것입니다. 나는 이것이 왜 그런지 정확히 볼 기회가 없었습니다.
을 사용하여 수행 할 수 있습니다 cat /proc/meminfo
.
MemTotal: 4039160 kB
MemFree: 309796 kB
MemAvailable: 3001052 kB
Buffers: 345636 kB
Cached: 2341288 kB
SwapCached: 8 kB
Active: 1725160 kB
Inactive: 1551652 kB
Active(anon): 538404 kB
Inactive(anon): 70076 kB
Active(file): 1186756 kB
Inactive(file): 1481576 kB
Unevictable: 32 kB
Mlocked: 32 kB
SwapTotal: 4194300 kB
SwapFree: 4194044 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 589988 kB
Mapped: 255972 kB
Shmem: 18596 kB
Slab: 374888 kB
SReclaimable: 310496 kB
SUnreclaim: 64392 kB
KernelStack: 6976 kB
PageTables: 26452 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6213880 kB
Committed_AS: 3589736 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 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: 147392 kB
DirectMap2M: 4046848 kB
watch cat /proc/meminfo
free
명령은 정보를 가져 와서 /proc/meminfo
간단한 방법으로 제공합니다. 사용하여 free -h
사람이 읽을 수있는 출력.
메모리 사용량 모니터링
메모리 사용을 모니터링하는 훌륭한 방법으로 Cacti를 언급 한 이전 게시물 중 하나와 더 일치합니다. 그러나 선인장이 더 이상 주류에서 인기가 없기 때문에 Graphite라는 대체 그래프 응용 프로그램이 있습니다.
Graphite는 우분투 서버에 설치하고 설치하기가 상대적으로 쉽습니다. 이 링크 를 확인하여 설치 절차를 쉽게 수행 할 수 있습니다 .
흑연을 설치 한 후 원하는 간격으로 메모리 메트릭을 보낼 수 있습니다. 5 초마다, 1 분마다, 1 시간마다 ...
이전 게시물에서 이미 제안한대로 메모리 메트릭을 그래프로 표시하려면 시스템 도구를 사용하여 필요한 메모리 정보를 수집하는 고유 한 스크립트를 작성할 수 있습니다. 또는 모든 작업을 수행하는 미리 작성된 snmp 플러그인을 사용할 수 있습니다.
자체 메모리 스크립트를 작성하려면 사용한 메모리를 계산할 때 버퍼링 및 캐시 된 메모리를 고려하는 것이 좋습니다. 그렇지 않으면 잘못된 데이터가 수집됩니다.
필요한 모든 계산을 이미 수행하는 snmp 플러그인을 대신 사용하려면 checkMemoryviaSNMP와 잘 작동하는 링크가 있습니다.
SNMP의 장점 :
모니터링하는 모든 원격 노드에 snmp를 설치했습니다. 이를 통해 원격 노드에 플러그인을 복사하거나 넣지 않고도 하나의 중앙 서버 에서 모든 시스템을 모니터링 할 수 있습니다 .
SNMP의 단점 :
메모리를 모니터링하려는 각 원격 노드에 snmp 에이전트 가 설치되어 있는지 확인해야합니다 . 그러나이 설치는 일회성 계약입니다. 요리사 또는 꼭두각시와 같은 자동화 도구 또는 이와 유사한 도구를 환경에서 사용하는 경우 전혀 문제가되지 않습니다.
원격 노드에서 SNMP 에이전트 구성 :
snmp 에이전트가 설치된 후에는 /etc/snmpd/snmpd.conf 파일을 찾아서 다음 행을 추가하십시오.
rocommunity (specify-a-community-string-aka-password-here)
그런 다음 다음과 같이 snmpd 에이전트를 다시 시작하십시오.
/etc/init.d/snmpd restart
그런 다음 중앙 서버에서 다른 모든 서버를 모니터링하는 대신 다음 명령을 실행할 수 있습니다.
$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ]. System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].
real 0m0.23s
user 0m0.03s
sys 0m0.02s
2896
있고1528
이것이 버퍼를 사용한다는 의미는 아닙니다2896 + 1528
.