Ответ
В DevOps-контексте важно не только смотреть общую утилизацию, но и детализировать потребление по процессам и сервисам.
Быстрый анализ через командную строку:
-
Топ потребителей памяти:
ps aux --sort=-%mem | head -10 -
Топ потребителей CPU:
ps aux --sort=-%cpu | head -10 -
Детальная информация по конкретному PID (например, 1234):
top -p 1234 # Или cat /proc/1234/status | grep -E 'VmRSS|VmSize' # VmRSS — физическая память, VmSize — виртуальная.
Для контейнеризированных сред (Docker/Kubernetes):
docker stats <container_id>
kubectl top pod <pod_name> --namespace <namespace>
Профессиональный мониторинг: Для постоянного наблюдения мы настраиваем стек мониторинга. Например, с Prometheus + Grafana:
- На серверах стоит
node_exporterдля системных метрик. - Для приложений настраиваются custom-метрики (например, через клиентские библиотеки для Python/Go).
- В Grafana создаются дашборды, которые показывают потребление ресурсов конкретным микросервисом в разрезе времени, что помогает выявлять утечки памяти или аномалии нагрузки.
Пример алерта в Prometheus, который я настраивал: container_memory_working_set_bytes{pod=~"my-app.*"} > 500MiB.