#!/usr/bin/env bash echo "=== Cloud Node Container Memory Usage ===" echo "Date: $(date)" echo "" echo "=== System Memory ===" free -h echo "" echo "=== Process Memory Usage ===" echo "Process PID VSZ RSS %MEM" echo "----------------------------------------" # Nginx nginx_pid=$(pgrep nginx | head -1) if [ ! -z "$nginx_pid" ]; then ps -o pid,vsz,rss,%mem,comm -p $nginx_pid | tail -n +2 | while read pid vsz rss mem comm; do printf "%-25s %5s %6s %6s %5s\n" "$comm" "$pid" "${vsz}K" "${rss}K" "$mem%" done fi # Node.js/PM2 pm2_pids=$(pgrep -f "PM2\|node") if [ ! -z "$pm2_pids" ]; then echo "$pm2_pids" | while read pid; do ps -o pid,vsz,rss,%mem,comm -p $pid 2>/dev/null | tail -n +2 | while read pid vsz rss mem comm; do printf "%-25s %5s %6s %6s %5s\n" "$comm" "$pid" "${vsz}K" "${rss}K" "$mem%" done done fi # Memcached memcached_pid=$(pgrep memcached) if [ ! -z "$memcached_pid" ]; then ps -o pid,vsz,rss,%mem,comm -p $memcached_pid | tail -n +2 | while read pid vsz rss mem comm; do printf "%-25s %5s %6s %6s %5s\n" "$comm" "$pid" "${vsz}K" "${rss}K" "$mem%" done fi echo "" echo "=== Container Resource Limits ===" if [ -f /sys/fs/cgroup/memory/memory.limit_in_bytes ]; then limit=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) if [ $limit -lt 9223372036854775807 ]; then echo "Memory Limit: $((limit / 1024 / 1024))MB" else echo "Memory Limit: No limit set" fi fi echo "" echo "=== PM2 Process Info ===" if command -v pm2 &> /dev/null; then pm2 list 2>/dev/null | grep -E "(App name|online|stopped|errored)" echo "" pm2 show 0 2>/dev/null | grep -E "(memory|cpu|uptime)" || echo "No PM2 processes running" fi