2016-03-29 16 views
5

Ho un'istanza EC2 t2.micro, in esecuzione a circa il 2% della CPU. So da altri post che l'utilizzo della CPU mostrato in TOP è diverso dalla CPU riportato in CloudWatch e che il valore di CloudWatch deve essere considerato attendibile.Le metriche della memoria di EC2 CloudWatch non corrispondono a quelle in alto.

Tuttavia, vedo valori molto diversi per l'utilizzo della memoria tra TOP, CloudWatch e NewRelic.

C'è 1 GB di RAM sull'istanza e TOP mostra ~ 300 MB di processi Apache, più ~ 100 Mb di altri processi. L'utilizzo complessivo della memoria riportato da TOP è 800Mb. Immagino ci siano 400Mb di overhead di sistema/sistema operativo?

Tuttavia, CloudWatch segnala 700 MB di utilizzo e NewRelic riporta 200 Mb di utilizzo (anche se NewRelic riporta 300 Mb di processi Apache altrove, quindi li sto ignorando).

La metrica della memoria di CloudWatch supera spesso l'80% e mi piacerebbe sapere qual è il valore effettivo, quindi so quando ridimensionarlo se necessario o come ridurre l'utilizzo della memoria.

Ecco il recente profilo di memoria, sembra qualcosa sta usando più memoria nel tempo (grandi tuffi sono o riavvio di Apache, o forse GC?)

Screenshot of memory usage over last 12 days

risposta

0

CloudWatch in realtà non fornire metriche per quanto riguarda l'utilizzo della memoria per l'istanza EC2, è possibile confermare questo here.

Di conseguenza, la metrica di MemoryUtilization a cui si fa riferimento è ovviamente una metrica personalizzata che viene spinta da qualcosa che è stato configurato o un'applicazione in esecuzione sulla propria istanza.

Di conseguenza, è necessario determinare cosa sta effettivamente spingendo i dati per questa metrica. La fonte dei dati sta ovviamente spingendo la cosa sbagliata, o è inaffidabile.

Il comportamento visualizzato non è un problema di CloudWatch.

+2

Grazie per i commenti. Per chiarire, sto utilizzando gli script forniti da Amazon per inviare informazioni sulla memoria a Cloudwatch (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html) Confrontando questo con le informazioni sulla memoria fornito da Top e NewRelic mostra valori diversi, quindi sto cercando di capire quale fidarsi di più quando si tratta di valutare quando il server sta raggiungendo la capacità. – Claude

+0

Questo è davvero interessante. Non sono del tutto sicuro di come funzionino tali script, ma so che non sono supportati ufficialmente. Stai usando Amazon Linux? Forse gli script non sono così affidabili con altre distribuzioni Linux ... ti consiglio di metterlo nei forum di supporto AWS ufficiali – mickzer

+0

Riferimento a "So che non sono supportati ufficiali" - L'OP ha fornito un collegamento a Documenti AWS. Quindi è ufficialmente supportato giusto? – HopeKing

2

AWS non supporta le metriche di memoria di qualsiasi istanza EC2. Poiché Amazon esegue tutto il suo monitoraggio dall'esterno dell'istanza EC2 (server), non è in grado di acquisire le metriche di memoria all'interno dell'istanza. Tuttavia, per il monitoraggio completo di un'istanza, è necessario disporre delle statistiche di utilizzo della memoria per ogni istanza, insieme alle sue operazioni di utilizzo della CPU e di IO di rete. Tuttavia, possiamo utilizzare la funzione di metrica personalizzata di cloudwatch per inviare qualsiasi dato a livello di app a Cloudwatch e monitorarlo utilizzando gli strumenti di Amazon. Puoi seguire questo blog per ulteriori dettagli: http://upaang-saxena.strikingly.com/blog/adding-ec2-memory-metrics-to-aws-cloudwatch

È possibile impostare un cron per un intervallo di 5 minuti in quell'istanza e tutti i punti di dati possono essere visualizzati in Cloudwatch.

Problemi correlati