linux-labs

Вики / Процессы

Мониторинг системы (load, top, vmstat)

Нагрузка, CPU, память, I/O — load average, top/htop, vmstat, iostat, free.

«Сервер тормозит» — выясни чем именно: CPU, память, диск (I/O) или сеть. Начни с обзора, потом копай по подсистеме.

uptime                            # load average за 1/5/15 минут
top                               # CPU/память по процессам (интерактивно)
htop                              # удобнее (если установлен)

Load average ≈ среднее число процессов, ждущих выполнения (готовых + в D-сне). Грубый ориентир: load ≈ числу ядер — норма; стабильно выше — перегрузка. Сверь с nproc.

nproc                             # сколько ядер (контекст для load average)
vmstat 1                          # CPU/память/swap/IO раз в секунду
mpstat -P ALL 1                   # загрузка по каждому ядру (пакет sysstat)
pidstat 1                         # CPU по процессам в динамике (sysstat)
pidstat -d 1                      # дисковый I/O по процессам
top -o %CPU                       # сортировка по CPU

Колонки vmstat: us пользовательский CPU, sy системный (ядро), wa iowait (ждём диск), id простой; si/so — swap in/out (если ≠0 — свопит).

iostat -xz 1                      # диски: %util, await, r/s w/s (sysstat)
iotop -o                          # какие процессы реально пишут/читают (нужен root)
free -h                           # память и swap (см. memory-swap)
sar -u 1 5                        # историческая статистика CPU (sysstat)
sar -r ; sar -b ; sar -n DEV     # история: память / I/O / сеть
dstat -tcdngy                     # всё сразу в одну строку (если установлен)

sar хранит историю (когда сбор включён: /etc/default/sysstatENABLED="true") — единственный способ узнать «что было ночью».

Высокий load, но CPU простаивает

Смотри iowait (vmstat 1, колонка wa) — процессы ждут диск. iostat -xz 1 → загруженный диск (%util под 100, большой await). iotop -o → кто пишет. Часто — медленный диск/NFS или своп (memory-swap).

Что именно ест CPU

topP; закрепи виновника. Динамика — pidstat 1; разовый снимок — ps aux --sort=-%cpu | head (см. processes).

Память на исходе

free -h; если swap активно растёт (si/so в vmstat) — см. memory-swap. OOM в журнале: journalctl -k | grep -i oom.

Сеть как узкое место

sar -n DEV 1, iftop/nload (если есть), для конкретных соединений — ss -i.

Нужна история, а не «сейчас»

sar (включи сбор в sysstat) хранит статистику по времени; иначе ставь мониторинг (prometheus + grafana).

uptime ; nproc                    # load average vs число ядер
top -o %CPU / htop                # CPU/память по процессам
vmstat 1                          # us/sy/wa (CPU/ядро/iowait), si/so (swap)
iostat -xz 1 ; iotop -o           # диски / кто пишет
pidstat 1 ; pidstat -d 1          # CPU / I/O по процессам
sar -u 1 5                        # история CPU

См. также