The First Step to Fixing Slow Systems
40sIt challenges common assumptions and provides a real-world example of a developer wasting time on a non-issue.
▶ Play Clip"The title says 'Linux Performance Tools' and the content delivers a solid if somewhat basic overview of several core command-line utilities."
This video provides a systematic guide to diagnosing and resolving Linux performance issues. It emphasizes the importance of confirming a real performance problem before diving into analysis, and then walks through essential command-line tools for gathering data and pinpointing root causes.
Before troubleshooting, ask questions to verify a real issue exists, such as defining what 'slow' means, whether the system worked better before, and which recent changes could have affected performance.
Specific questions include: 'What makes you think there's a problem?', 'Has it ever been faster?', 'Has anything changed recently?', 'What quantifies slow?', and 'Does it affect multiple users or just one?'. This helps set a baseline.
A developer reported a slow 5-second query, but it was found the query always took 5 seconds. The issue was an expectations mismatch, not performance, highlighting the need for confirmation to avoid wasting resources.
Move from vague terms like 'slow' to concrete metrics, such as 'does a webpage take 10 seconds' or 'does a database query take time'. Identify when and where the problem occurs, and assess impact.
Start with 'uptime' to check the load average (average number of processes running or waiting for resources). High numbers consistently exceeding CPU cores may indicate contention.
This provides a dynamic, real-time view of system processes. Key metrics include CPU usage by user and system; watch for processes with unusually high CPU or memory.
This displays system components with values in real time, including CPU speed, swapping activity, and I/O wait time. For detailed analysis, return to 'iostat' or use 'iostat' for a continuous view.
'iostat' breaks down I/O by device; use it to pinpoint which disk is causing problems. 'netstat' can list all active connections, display listening ports, count connections for a specific port (e.g., port 80 for web), and identify traffic.
SAR (System Activity Report) is excellent for analyzing historical data. It can save data periodically, allowing you to look at previous days to identify trends and correlate with specific times.
The process is iterative. Start with broad tools like 'uptime' and 'top', then narrow your focus based on what you find, as problems can occur at any layer (hardware, application) or subsystem (file systems, networks).
What is the first step when someone reports a performance problem?
Ask clarifying questions to confirm a real problem exists and set a baseline.
00:02
What is the 'Cannon approach to ports' (mentioned) symptomatic of?
Blindly swapping ports without confirming a real problem, leading to wasted time on non-existent issues.
01:09
What does the load average in 'uptime' measure?
The average number of processes that are either running or waiting for resources over the last 15 minutes.
02:20
What is the function of the 'top' command?
It provides a dynamic, real-time view of system processes and key indicators like CPU and memory usage.
03:15
What distinguishes 'sar' from other monitoring tools?
Its ability to store historical data, enabling analysis of past performance trends and events.
05:10
Confirm Before Investigating
Highlights a critical, often overlooked first step that prevents wasted effort by ensuring the problem is real and quantifiable.
00:02From Vague to Specific Metrics
Emphasizes the need to move from subjective descriptions to concrete, measurable performance criteria.
01:22Understanding Load Average
Explains how a seemingly simple metric can be influenced by I/O, CPU, or short processes, guiding deeper investigation.
02:20High Value of Historical Data
Shows how tools like 'sar' can help correlate problems with events and trace recurring issues over time.
05:10[00:02] методы, которые помогут нам эффективно диагностировать и решать проблемы с производительностью в системах Leux. Прежде чем углубляться в технические детали, давайте поговорим о важнейшем первом шаге, который иногда упускают из виду даже опытные разработчики: проверка наличия
[00:14] реальной проблемы с производительностью. Когда кто-то сообщает о проблеме с производительностью, нам нужно задавать уточняющие вопросы: что заставляет нас думать, что есть проблема; работала ли система когда-либо лучше; какие недавние изменения могли
[00:27] повлиять на производительность; можем ли мы количественно оценить, что означает «медленно» в этом контексте; затрагивает ли проблема нескольких пользователей или только одного? Эти вопросы — не просто формальности, они помогают прояснить проблему, установить базовый уровень для сравнения, а
[00:42] иногда даже решить проблему без дальнейшего расследования. Позвольте мне привести быстрый пример из реальной жизни: разработчик однажды пожаловался на медленный запрос к базе данных, занимающий 5 секунд. После расследования мы обнаружили, что этот запрос
[00:55] всегда занимал 5 секунд. Проблема заключалась не в производительности, а в несоответствии ожиданиям EXP. Представьте, если бы я сразу же приступил к устранению неполадок, не задавая вопросов, я бы потратил время и ресурсы на поиск несуществующей проблемы.
[01:09] В других случаях это называется « подходом Кэннона к портам» — слепая замена портов в надежде исправить проблему. Это подчеркивает, почему... Крайне важно подтвердить наличие реальной проблемы с производительностью, прежде чем приступать к анализу. Это сэкономит время и
[01:22] позволит нам сосредоточиться на решении реальных проблем, а не на поиске несуществующих причин. После подтверждения реальной проблемы с производительностью необходимо точно её определить. Это означает переход от расплывчатых терминов, таких как «медленно», к конкретным метрикам: например, «занимает ли веб-страница 10
[01:36] секунд» или «затягивается ли запрос к базе данных», « время ожидания». Нам нужно точно определить, когда и где возникают эти проблемы, а также понять масштаб и влияние: затрагивает ли это все серверы или только один, сколько пользователей затронуто и каковы
[01:51] последствия для бизнеса. Наконец, мы исследуем источник проблемы: связана ли низкая производительность с легитимной активностью пользователей, конкретным приложением или, возможно, запущенным процессом. Мы количественно оцениваем это в терминах запросов в секунду,
[02:05] скорости передачи данных и того, как это меняется со временем. Такой целенаправленный подход создает четкую дорожную карту для нашего исследования, гарантируя, что мы не будем тратить время на несвязанные области. Теперь давайте рассмотрим некоторые основные инструменты, которые могут помочь нам собрать эту
[02:20] информацию и точно определить первопричину наших проблем с производительностью. Начнем с времени безотказной работы. Ключевой метрикой здесь является среднее значение низкой производительности, которое показывает среднее количество процессов, которые либо запущены, либо ожидают ресурсов за
[02:33] последние 15 и 15 дней. 15 минут — это сложный показатель, на который могут влиять различные факторы. Если эти числа постоянно превышают количество ядер ЦП, это может указывать на конкуренцию процессов за ресурсы,
[02:46] но это не всегда так просто. Высокие и низкие средние значения могут быть вызваны ресурсоемкими задачами ЦП, узкими местами ввода-вывода или даже быстро появляющимися и исчезающими процессами. Помните, что низкое среднее значение само по себе не отражает всей картины, это
[03:01] скорее отправная точка, которая подсказывает нам, что нам может потребоваться дальнейшее исследование. Когда мы видим повышенные и низкие средние значения, это означает, что нужно использовать другие инструменты для более глубокого анализа. Это подводит нас к следующему инструменту: top. top предоставляет динамическое, постоянно обновляемое
[03:15] представление процессов системы и ключевых показателей. Это как панель мониторинга производительности системы. Некоторые ключевые показатели, за которыми следует следить, — это процент использования ЦП следить, — это процент использования ЦП пользовательскими и системными процессами.
[03:28] процессов. Обратите особое внимание на любые процессы, потребляющие необычно высокий процент ЦП или памяти. Это может быть причиной проблем с производительностью. Помните, что top дает нам снимок
[03:42] текущего момента. Для более полной картины нам может потребоваться отслеживать ситуацию в течение времени или использовать другие инструменты для дополнения вашего анализа. Далее — VM. Команда `stat VM stat` отображает несколько компонентов системы одновременно, обновляясь в режиме реального времени. Ключевые области для наблюдения
[03:57] обновляясь в режиме реального времени. Ключевые области для наблюдения включают в себя скорость ЦП, активность подкачки ioe и время ожидания ввода-вывода в разделе ЦП. Для более подробного анализа вернитесь к `iio stat` — это даст нам непрерывное представление об этой активности. Ключевые показатели для наблюдения — количество
[04:11] транзакций в секунду для этой активности и процент времени, затраченного на ожидание операций ввода-вывода в разделе ЦП. Команда `iio step` разбивает операции ввода-вывода по устройствам. Это полезно, когда нам нужно определить, какой именно диск
[04:26] вызывает проблемы с производительностью. Теперь давайте изучим Net — полезный инструмент для мониторинга сетевых подключений. `net stat` имеет множество опций, мы сосредоточимся на нескольких полезных для анализа производительности. Сначала давайте перечислим все активные подключения. Эта команда
[04:42] отображает все активные подключения, как входящие, так и исходящие. Она полезна для определения открытых портов и активных служб в нашей системе. Мы можем отображать только прослушиваемые порты. Мы также можем подсчитать подключения для определенного порта. Здесь
[04:56] мы подсчитываем подключения на порту 80. Эта быстрая команда может помочь нам оценить нагрузку на определенную службу. Если мы видим необычно большое количество подключений, это может указывать на потенциальную проблему с производительностью — всплеск трафика, требующий
[05:10] расследования. И наконец, давайте рассмотрим SAR, что означает « отчет об активности системы». Это универсальный инструмент, отлично подходящий для анализа исторических данных. Вот пример того, как он сообщает об использовании ЦП. В то время как SAR предоставляет аналогичную информацию, как и
[05:24] другие инструменты, которые мы обсуждали, его отличает способность сохранять исторические данные. Многие дистрибутивы Linux настраивают SAR на периодический сбор данных. Этот автоматизированный сбор данных может быть бесценным. Если пользователи сообщают о периодических
[05:39] замедлениях, мы можем использовать SAR для анализа предыдущих дней и выявления тенденций производительности. Это особенно полезно для сопоставления производительности системы с конкретным временем или событиями. Он может выявлять закономерности, неочевидные при
[05:52] мониторинге в реальном времени. Важно подчеркнуть, что мы здесь лишь поверхностно рассматриваем этот вопрос. подчеркнуть, что мы здесь лишь поверхностно рассматриваем этот вопрос. каждого уровня системы, от оборудования до приложений, и для
[06:05] каждой подсистемы, от файловых систем до сетевых стеков. Помните, что этот процесс итеративный. Нам может потребоваться использовать несколько инструментов и углубляться в анализ в зависимости от того, что мы обнаружим. Ключевой момент — начать с широкого спектра инструментов, таких как uptime и top, а затем сузить
[06:20] фокус на основе того, что мы обнаружили. Если вам нравятся наши видео, вам также понравится... В нашей рассылке по системному проектированию мы освещаем важные темы в области проектирования крупномасштабных систем. Присоединяйтесь к нашему сообществу из 1 миллиона подписчиков из технологической
[06:34] of 1 million subscribers from the tech industry subscribe at blog. bio.com
⚡ Saved you 0h 06m reading this? Transcribe any YouTube video for free — no signup needed.