Устранение неполадок - это форма решения проблем, часто применяемая для ремонта неисправных продуктов или процессов на машине или системе. Это логический, систематический поиск источника проблемы с целью ее решения и восстановления работоспособности продукта или процесса - Википедия

Когда происходит серьезный сбой и сообщается об ошибке, естественно начать устранение неполадок и попытаться найти первопричину как можно быстрее. Хотя определение первопричины будет первым ответом, рекомендуемый курс действий - заставить систему работать настолько хорошо, насколько это возможно в данных обстоятельствах. Подобно самолетам, пилотов учат управлять самолетом в аварийной ситуации; поиск и устранение неисправностей вторичен по отношению к безопасному воплощению плана в жизнь.

В этой статье будет описан методический подход к устранению неполадок и инструменты Linux для понимания сбоев системы и эффективного решения проблемы. (Большое спасибо моему наставнику за то, что он научил меня этим полезным инструментам системы Linux !!)

›› Журналы

Ведение журнала - это удобный инструмент в комплекте любого разработчика, позволяющий исправить любые проблемы. Файл журнала позволяет быстро понять поведение вашего приложения. Экспорт информации о каждой операции и о состоянии системы упрощает анализ того, что выполнял процесс в данный момент времени. Некоторые важные системные журналы Linux включают /var/log/syslog, /var/log/auth.log, /var/log/kern.log и /var/log/dmesg.

Stacktraces также ваш лучший друг для отладки. Начните с изучения сообщенной ошибки и используйте трассировку стека, чтобы вернуться через замороженное состояние программы, чтобы выяснить, как исправить проблему. Прослеживание запросов через весь стек предоставляет мощный способ получить более полную картину того, как работает распределенная система.

Тщательное понимание конструкции системы помогает выдвигать гипотезы о том, что пошло не так. Пора глубже изучить проблемные хосты, чтобы определить причину.

›› Процессы

Наш следующий шаг в процессе устранения неполадок - исследование хостов на предмет увеличения задержки, использования ЦП или количества запущенных процессов. Мониторинг процессов - один из наиболее всеобъемлющих инструментов, позволяющих увидеть, что делает приложение под капотом.

Максимизируем ли мы какие-либо системные ресурсы?

top - command that provides a dynamic real-time view of a running system
htop - command to interactively monitor the system’s vital resources or server’s processes in real time

htop - более красивая, красочная и последняя версия top, которая делает htop - лучший инструмент для устранения проблем с производительностью сервера.

htop отображает в реальном времени обзор того, что происходит на сервере. На первый взгляд мы видим следующее:

  • Количество отдельных процессоров на вашем сервере и их ресурсы с разбивкой по отдельности
  • Использование оперативной памяти с разбивкой по процессам
  • Использование подкачки
  • Общее количество задач, количество потоков и количество запущенных задач
  • 1 минута, 5 минут, 10 минут средняя нагрузка
  • Время работы системы и текущее время
  • Все запущенные процессы - [PID | Пользователь | Приоритет | Симпатичность | Виртуальный образ | Размер резидента | Размер общей памяти | CPU% | Память% | Время | Командование

После того, как вы определили подозрительный процесс, вы можете сосредоточиться на нем. Команду top / htop можно использовать:

top -p $PID

Если процессы выглядят так, как будто они работают нормально, но использование памяти системой выше среднего, мы можем подробно проверить использование памяти.

>> Объем памяти

Чтобы выяснить, почему на сервере увеличилось потребление памяти, можно использовать следующие инструменты для выявления приложений, интенсивно использующих память, а также для освобождения памяти и оптимизации производительности:

free - display amount of free and used memory in the system

С помощью команд top / htop отображается только объем свободной и используемой памяти. Команда free отображает: общий объем свободной и используемой физической памяти, общий объем памяти подкачки в системе, а также буферы и кеши, используемые ядром.

Убийца OOM или (Убийца нехватки памяти) - это процесс, который ядро ​​Linux использует, когда в системе критически мало памяти. Это происходит потому, что процессы на сервере потребляют большой объем памяти, и системе необходимо выделить его другим процессам. Если свопинг не включен в системе, ядро ​​выставляет оценку каждому запущенному процессу под названием ooo_score, который определяет, насколько вероятно его завершение в случае нехватки доступной памяти.

Если подкачка включена, страницы памяти копируются в выделенное пространство подкачки на жестком диске, чтобы освободить эту страницу памяти. Проверьте раздел Диск

df - report file system disk space usage

df отображает объем доступного дискового пространства в файловой системе, содержащий каждый аргумент имени файла.

›› Диск

Основная функция пространства подкачки - заменить дисковое пространство оперативной памятью, когда реальная оперативная память заполняется и требуется больше места. Ядро использует программу управления памятью, которая обнаруживает блоки (или страницы) памяти, которые использовались не так давно, и переставляет эти страницы памяти в специальный раздел на жестком диске. Мы можем использовать следующие команды для отслеживания статистики дискового ввода-вывода:

iostat - report CPU statistics and I/O statistics for devices, partitions and NFS

Команда iostat используется для отслеживания загрузки системного устройства ввода-вывода. Это достигается путем наблюдения за временем активности устройств по отношению к их среднему времени передачи. Подобно команде iostat, команда vmstat сообщает статистику виртуальной памяти и информацию о системных событиях, таких как загрузка ЦП, подкачка страниц, системные вызовы и т. Д. vmstat -S может использоваться для отображения обмен статистикой.

iotop - simple top-like I/O monitor

iotop - это интерактивный инструмент мониторинга ввода-вывода в Linux, например htop, позволяющий легко отслеживать использование полосы пропускания для чтения и записи на диск для каждого запущенного процесса в Linux. Это очень полезный инструмент для системного администрирования, позволяющий отслеживать определенные процессы, которые могут вызвать большое количество операций чтения / записи на диск. Он также отображает процент времени, затраченного потоком или процессом на подкачку и ожидание ввода-вывода.

Другие команды включают iotop, atop и dstat

›› Сети

Для сетей нас больше интересует пропускная способность (количество запросов в секунду - пропускная способность). Мы хотели бы проверить скорость (пропускную способность чтения и записи в битах в секунду) и использование (пропускную способность чтения и записи, деленную на максимальную пропускную способность сети). Некоторые полезные инструменты сетевой отладки для ответа на всплески задержки и неудавшиеся запросы включают:

netstat - prints network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

netstat сообщает, какие процессы на каких портах запущены. Он служит важным инструментом мониторинга соединений по сети, поскольку показывает входящие и исходящие соединения, таблицы маршрутизации, прослушивание портов и статистику использования; более свежая команда - ss.

tcpdump - dump traffic on a network

tcpdump - это анализатор пакетов сети передачи данных. Это позволяет пользователю отображать TCP / IP и другие пакеты, переданные или полученные по сети. Его можно использовать для устранения неполадок в сети и в качестве инструмента безопасности. Чтобы распечатать пакеты для просмотра, используйте tcpdump -A.

netcat - arbitary TCP and UDP connections and listens 

С помощью nectat вы можете открывать TCP-соединения, отправлять UDP-пакеты, прослушивать произвольные UDP- и TCP-порты, сканировать порты и многое другое. Он функционирует как внутренний инструмент, который позволяет сканировать и прослушивать порты, а также позволяет передавать файлы.

Ресурсы:

Поиск и устранение неисправностей никогда не бывает таким чистым, как наша идеализированная модель, и, как любой другой навык, требует практики. Это некоторые шаги, которые могут сделать процесс устранения неполадок менее болезненным и более продуктивным для тех, кто испытывает системные проблемы, и тех, кто их решает. Принятие систематического подхода к устранению неполадок может помочь сократить время воздействия и время восстановления связанного сервиса, а также повысить удобство работы пользователей.

Получайте удовольствие и никогда не забывайте проверять журналы! 📝