Системные администраторы часто получают жалобы, связанные с низкой производительностью сервера, и устранить эти проблемы может быть сложно, поскольку они носят субъективный характер. Медленная работа сервера конечным пользователем может быть вызвана запущенным процессом, потребляющим больше ресурсов, чем обычно, или на самом деле что-то не так с сервером.
Какой бы ни была причина, важно регулярно отслеживать производительность сервера, чтобы:
В этой статье мы обсудим различные показатели, используемые для мониторинга производительности сервера и устранения проблем с производительностью.
Несколько показателей могут помочь отслеживать три основных компонента любого сервера — процессор, оперативную память и операции ввода—вывода с диска – чтобы получить представление о том, как работает ваш сервер Linux. Некоторые из этих показателей:
Различные проблемы с производительностью возникают в разных операционных системах или службах, и каждая проблема требует уникального подхода к устранению неполадок. Большинство проблем вызвано работой процессора, диска, памяти, сети и ввода-вывода.
Каждая область выдает разные симптомы и требует другой диагностики и решения для снижения медлительности сервера.
Например, если сервер работает медленно или устарел, система не сможет соответствовать требованиям современных приложений. Это может привести к тому, что конечные пользователи столкнутся с увеличением времени отклика, что вызовет у них разочарование и снизит их доверие к вашему приложению.
Запросы к базе данных также могут занимать слишком много времени для извлечения данных, что приводит к снижению производительности приложений. Медленный сервер также может напрямую повлиять на возможности использования центрального процессора.
Наконец, низкая производительность сервера иногда может приводить к простоям, хотя вероятность такого возникновения невелика.
Чрезмерная загрузка системы, вероятно, является одной из наиболее распространенных причин замедления работы системы.
Загрузка системы с ограниченным процессором может создавать проблемы из-за процессов, ожидающих ресурсов процессора, в то время как загрузка системы с ограниченным объемом оперативной памяти может привести к увеличению времени ожидания ввода-вывода, поскольку система начинает использовать подкачку на сервере, когда у него заканчивается оперативная память. Между тем, загрузка системы, ограниченная вводом-выводом, может привести к замедлению, поскольку процессы конкурируют за ресурсы дискового или сетевого ввода-вывода. Большое время работы пользователя ЦП также может способствовать высокой загрузке системы.
Дополнительные факторы, которые могут привести к замедлению работы сервера, включают:
Linux предлагает различные команды для устранения неполадок в производительности системы. Эти команды помогают контролировать различные компоненты вашей системы, такие как память, центральный процессор и ввод-вывод. Тремя наиболее часто используемыми командами являются команды top, vmstat, и iostat.
Команда top является наиболее часто используемой командой для отображения общего вида системы. В нем суммируются различные показатели уровня процессора, рассмотренные в вышеприведенных разделах, включая время безотказной работы, средние значения нагрузки и время ожидания ввода-вывода. Кроме того, он отображает запущенный список процессов или задач, которыми в данный момент управляет ядро.
Синтаксис:
top [options]
Пример:
При запуске команды top отобразится результат, аналогичный показанному ниже:
Как вы можете видеть в приведенных выше выходных данных, в первом разделе отображается сводная информация о системе в реальном времени и динамике.
В первой строке отображается время безотказной работы вместе со средними значениями загрузки системы за последние один, пять и 15-минутный периоды. Если среднее значение нагрузки превышает нормальное значение нагрузки, т.е. 0,7 с интервалом в одну и пять минут, его можно игнорировать. Когда среднее значение нагрузки остается стабильно выше 0,7 в течение более длительного времени, это явный признак того, что сервер перегружен.
Во второй строке отображается различная информация на уровне задач, включая активные, запущенные и спящие задачи.
В третьей строке с надписью %CPU(s), отображаются различные статистические данные на уровне процессора. Вот некоторые показатели для мониторинга::
В четвертой и пятой строках отображаются данные о системной памяти, в то время как в последнем разделе отображается динамический список процессов в режиме реального времени. Вы можете отсортировать этот список на основе различных показанных столбцов. Например, нажатие P приведет к сортировке процессов на основе столбца %CPU.
Следующая важная команда в списке – команда vmstat, которая расшифровывается как статистика виртуальной памяти. Это инструмент мониторинга производительности, предоставляемый Linux, который отображает различную статистику о различных компонентах системы, включая память, ввод-вывод и центральный процессор.
По умолчанию эта команда отображает отчеты с момента последней перезагрузки системы. Однако вы также можете просматривать статистику в реальном времени, которая обновляется через указанный вами интервал.
Синтаксис:
vmstat [options][delay [count]]
Для просмотра отчетов в режиме реального времени можно использовать следующие два параметра:
Пример:
Выполнение команды vmstat выдаст вам результат, аналогичный следующему:
Выходные данные разделены на пять разделов.
В cpu разделе отображаются данные, аналогичные тем, которые содержатся в строке %Cpu(s) в выводе верхней команды.
Команда iostat это важная и широко используемая команда для мониторинга статистики ввода/вывода вашей системы. Хотя такие команды, как top или vmstat, могут помочь вам обнаружить, что сервер испытывает большое время ожидания ввода-вывода, вы также должны знать, какие устройства/разделы находятся под нагрузкой и вызывают большое время ожидания ввода-вывода.
Команда iostat выполняет именно это и генерирует отчеты на уровне устройства. Кроме того, она также выдает статистику на уровне процессора, аналогичную тем, которые предоставляются командами top и vmstat. Точно так же, как vmstat, выводимые данные по умолчанию относятся к времени, прошедшему с момента последней перезагрузки системы, но вы можете просматривать данные в режиме реального времени, указав пару дополнительных параметров.
Синтаксис:
iostat [option] [interval] [count]
Параметры interval и count здесь аналогичны параметрам в команде vmstat и используются для отображения обновлений в реальном времени бесконечно или для определенных значений.
Пример:
Выполнение команды iostat выдаст вам результат, аналогичный показанному ниже:
Как вы можете видеть в приведенном выше выводе, в первой строке отображается отчет процессора:
В следующем разделе приведена следующая статистика для всех устройств/разделов в системе:
Следует исследовать очень высокие значения Blk_wrtn/s или Blk_read/s для конкретного устройства или раздела, поскольку это может увеличивать нагрузку на центральный процессор и, следовательно, снижать производительность сервера.
Производительность сервера имеет решающее значение, поскольку она может напрямую повлиять на базу пользователей приложения. Мониторинг показателей производительности помогает выявить и устранить любые проблемы на сервере до того, как это может повлиять на ваше приложение.
В этой статье мы упомянули основные команды — top, vmstat, и iostat—that, которые можно использовать для определения причин замедления работы системы. Описанные здесь методы можно использовать для устранения неполадок и устранения проблем с постоянством.