Linux и диагностика
Как отличить заполненный диск от перегруженного I/O?
Заполненность проверяют через df -h, распределение по каталогам через du, а inode через df -i. Перегрузку I/O ищут в iostat -xz: растущие latency и очередь при высокой загрузке устройства указывают на насыщение. iotop или данные cgroup помогают найти процесс-источник. Один высокий %util не универсален для всех современных дисков и массивов, поэтому его сопоставляют с задержкой, IOPS, throughput и SLO приложения. Важно смотреть временной ряд: мгновенный снимок после всплеска может скрыть причину. Свободное место и производительность диска являются независимыми проблемами.
Ссылки для изучения
Чем SIGTERM отличается от SIGKILL?
SIGTERM процесс может перехватить и выполнить graceful shutdown: перестать принимать работу, дождаться активных операций, закрыть соединения и сбросить буферы. Обработчик должен уложиться в заданный timeout. SIGKILL перехватить, заблокировать или обработать нельзя; ядро прекращает процесс сразу, поэтому пользовательский cleanup не выполняется. Обычно оркестратор сначала посылает SIGTERM, затем после grace period применяет SIGKILL. Приложение должно выдерживать принудительное завершение за счёт транзакций, идемпотентности и восстановления, а не полагаться только на shutdown hook.
Ссылки для изучения
Как диагностировать высокую загрузку CPU в Linux?
Сначала смотрят тренд CPU и load, затем top или htop находят процесс, а режим потоков показывает горячий thread. mpstat -P ALL разделяет загрузку по ядрам и категории user, system, iowait, steal. Высокий load при свободном CPU может означать задачи в непрерываемом ожидании I/O, а не вычисления. Для процесса используют профилировщик, pidstat или perf по ситуации и сопоставляют всплеск с deploy, трафиком и логами. Причину подтверждают профилем или воспроизводимым изменением, а не завершают анализ на строке «CPU 100%».
Ссылки для изучения
Как диагностировать нехватку памяти в Linux?
free -h читают по available, а не по маленькому free: Linux использует память под reclaimable cache. В top, ps или smem ищут процессы по RSS/PSS и смотрят динамику, а не один снимок. vmstat показывает swap и page activity; постоянный swap-in/out вместе с задержкой указывает на давление памяти. Проверяют лимиты cgroup и журналы ядра на OOM kill, потому что контейнер может исчерпать свой лимит при свободной памяти хоста. Затем отделяют утечку heap, page cache и mmap с помощью метрик приложения и профайлера.
Ссылки для изучения
В каком порядке диагностировать сеть в Linux?
Диагностику ведут снизу вверх. Проверяют link, адрес и MTU через ip link и ip addr, затем маршрут и gateway через ip route. Отдельно проверяют DNS с dig или resolvectl, достижимость адреса и нужного TCP/UDP-порта, не полагаясь только на ping. На сервере ss -lntup показывает listener и bind-address. Затем смотрят firewall, security groups, NAT и proxy. Для HTTPS проверяют TLS handshake, имя сертификата и SNI через curl -v или openssl s_client. tcpdump помогает локализовать, доходят ли пакеты и где исчезает ответ.
Ссылки для изучения
Почему запись невозможна при свободном месте на диске?
Свободные байты не гарантируют возможность записи. Сначала проверяют inode через df -i: множество мелких файлов может исчерпать их раньше места. Затем смотрят quota пользователя или проекта, права на каталог и родительские директории, read-only mount и ошибки файловой системы в kernel log. На ext-файловых системах часть блоков может быть зарезервирована для root; контейнер также может иметь отдельный writable-layer или volume limit. df и du могут расходиться из-за удалённого, но ещё открытого файла. Причину подтверждают на том filesystem и под тем пользователем, который получает ошибку.
Ссылки для изучения
Как интерпретировать три значения Load Average?
Три числа Load Average описывают усреднённое число runnable задач и задач в непрерываемом ожидании примерно за 1, 5 и 15 минут. Их сравнивают с количеством доступных CPU. Load 8 на 8 CPU означает другую ситуацию, чем на 2 CPU. Рост последовательности 1/5/15 показывает недавний всплеск, обратное соотношение, снижение нагрузки. Load не является процентом CPU и может вырасти из-за дискового I/O. Поэтому его сопоставляют с mpstat, run queue, iowait, pressure и состоянием процессов, а в контейнере учитывают CPU quota.
Ссылки для изучения





