Система слишком медленная

Моя Linux-система реагирует очень медленно. Я должен подождать, чтобы получить результат моей команды.

Как я могу исследовать, чтобы узнать проблему его поведения?

2 Solutions collect form web for “Система слишком медленная”

Устранение проблем производительности в Linux не просто, и я не буду раскрывать все возможности. Однако большинство проблем приходится на 3 категории: высокая загрузка процессора, использование памяти или использование ввода-вывода . ПРИМЕЧАНИЕ: все они взаимосвязаны.

Первый тип: top -b -n 1 | head -15 top -b -n 1 | head -15

Это даст вам следующий результат:

 top - 15:32:09 up 19 days, 2:32, 2 users, load average: 0.61, 0.46, 0.42 Tasks: 208 total, 1 running, 207 sleeping, 0 stopped, 0 zombie Cpu(s): 0.9%us, 3.6%sy, 0.0%ni, 95.2%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 16430432k total, 15188864k used, 1241568k free, 304624k buffers Swap: 2097148k total, 112k used, 2097036k free, 7342636k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16106 rmistero 20 0 4070m 2.1g 2.1g S 30 13.5 4678:57 VirtualBox 26070 rmistero 20 0 6113m 749m 697m S 6 4.7 628:55.93 VirtualBox 14863 rmistero 9 -11 272m 3192 1804 S 2 0.0 5:57.19 pulseaudio 1 root 20 0 24724 2548 1276 S 0 0.0 0:05.32 init 2 root 20 0 0 0 0 S 0 0.0 0:00.15 kthreadd 3 root 20 0 0 0 0 S 0 0.0 0:33.45 ksoftirqd/0 6 root RT 0 0 0 0 S 0 0.0 0:03.74 migration/0 7 root RT 0 0 0 0 S 0 0.0 0:02.51 watchdog/0 

Сначала взгляните на среднее значение нагрузки . Проверьте здесь, чтобы понять, что это значит (очень важно понять эту концепцию).

ВАЖНО: здесь ниже я предполагаю, что у вас есть одно ядро ​​(1 процессор, нет двухъядерного процессора, …)

Если нагрузка avg меньше 1 после 5 минут, тогда загрузка процессора в порядке. На данный момент я не уверен, что это может быть. Продолжайте устранять неполадки, например, если это НЕ ОК.

Если нагрузка avg превышает 1 после 5 минут, тогда загрузка процессора высока. Чтобы понять, почему загрузка процессора высока, проверьте следующие данные в выводе, указанном сверху:

В выводе выше вы можете увидеть список процессов. Посмотрите на колонку % CPU и проверьте, есть ли процессы с использованием 100%. Тот факт, что они используют 100% процессора, может быть или не быть проблемой, но в качестве теста было бы неплохо остановить их.

Чтобы остановить процесс сверху, нажмите «k» и введите значение, найденное в PID для данного процесса.

ВАЖНО: Запишите имя процесса. Прежде чем убить кого-либо, попробуйте понять, что они делают (поиск в google). Вы можете остановить только тот процесс, который у вас есть (проверьте в столбце USER), как обычный пользователь (вам нужно быть root, но будьте осторожны с тем, что вы убиваете, в сомнении нет). Также обратите внимание на % us и % sy values, us означает пользователя и sy для системы. В основном они соответственно представляют собой использование ЦП в пространстве пользователя и пространстве ядра.

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

Чтение значения в % ва . Это высоко? (более 50%), если он высок, это означает, что входы / выходы (I / O) на диск высоки и процессор ждет. Используйте команду iostat чтобы определить, какой диск медленный.

Вы также можете проверить использование памяти.

Введите free -m в командной строке. Вы должны увидеть что-то вроде этого:

  total used free shared buffers cached Mem: 16045 14835 1209 0 298 7172 -/+ buffers/cache: 7365 8679 Swap: 2047 0 2047 

Проверьте значение в используемом буфере / кеше. Если он использует слишком много mem, значение должно быть близко от общего числа.

Проверьте также используемое значение в Swap (если у вас есть раздел подкачки). Если он высок, это означает, что он близок к максимальному значению, указанному в общей сумме (для Swap), то это означает, что ваша система сильно меняет местами, а это означает, что она вызывается на диск (что намного медленнее, чем RAM).

Опять же, это может не решить вашу проблему, но это хорошее начало.

проверить статус:

 #!/bin/sh while [ 1 ] do /usr/bin/iostat -x -m -t 10 6 >> /var/log/iostat.`date +%Y%m%d`.log 2>&1 sleep 10 done 
  • Как отлаживать вставленный модуль ядра?
  • Как сохранить результат printf в переменной в GDB?
  • Как определить номера сигналов, используя strace в приложении?
  • Почему Linux печатает много отладочных сообщений при загрузке / завершении работы?
  • установить -xv поведение в ksh vs bash
  • Отсутствует отдельный debuginfo для - GDB
  • Есть ли эквивалент addr2line в системе AIX?
  • Модуль Linux Kernel Удаленная отладка с GDB + KGDB, удаленный ответ «g» пакет слишком длинный
  • Отключить вывод журнала на консоль
  • Исходный код для отладки в Debian?
  • Как отключить xxtrace и сохранить код выхода
  • Linux и Unix - лучшая ОС в мире.