Назад | Перейти на главную страницу

Ubuntu Linux, интерпретация результата команды top

Я новичок в ОС Linux, и у меня были проблемы с моими сайтами на основе Drupal, которые оказались очень медленными. Я использую 2 отдельных сервера для хостинга и MYSQL. По предварительному формированию верхняя команда, я получил следующий результат

top - 06:34:26 up 17:54,  1 user,  load average: 4.54, 4.98, 5.36

Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
Cpu(s): 74.8%us, 23.6%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  1.7%si,  0.0%st
Mem:   4044336k total,  3963584k used,    80752k free,    21760k buffers
Swap:  1477940k total,        0k used,  1477940k free,  3530868k cached

PID   USER      PR  NI  VIRT  RES    SHR  S   %CPU  %MEM    TIME+  COMMAND
1077  mysql     20   0  502m  181m   4124 S    98.8  4.6   549:02.28 mysqld

Использование процессора для процесса mysql составляет 99,7%. Означает ли это, что мои процессоры работают на пределе. Что можно сделать, чтобы решить эту проблему? Мне нужно добавить больше ядер? Однако, напротив, средние нагрузки низкие.

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

Попробуйте эту ультра-удобную блок-схему, чтобы определить вашу проблему (хотя я предполагаю, что вы ограничены процессором):

Из Блог майора Хайдена.

Если это сервер MySQL, кто использует всю память? ... MySQL использует 181 Мб памяти. Это очень небольшое.

  1. Посмотрите: ПОКАЗАТЬ ПОЛНЫЙ СПИСОК ПРОЦЕССОВ \ G;
  2. Посмотрите файл журнала (mysql и ваш веб-сервер)
  3. Используйте mysqltuner.pl (http://mysqltuner.pl/mysqltuner.pl), чтобы настроить my.cnf.
  4. Оптимизация на аппаратном уровне (добавление памяти и процессора)

Вы должны проверить Зачем MySQL настолько загружен, что если у вас уже есть 2 или 4 ядра, это, вероятно, не ваша проблема. Хорошая, грамотно оптимизированная система баз данных сможет использовать гораздо больше оперативной памяти, прежде чем максимально использовать время процессора. Прежде чем думать об обновлении оборудования, следует обратить внимание на следующие моменты:

  • индексы таблиц
  • медленные запросы
  • настройки таблиц tmp
  • (отредактировано) ОПТИМИЗАЦИЯ ТАБЛИЦЫ
  • (отредактировано) фрагментация базы данных (см. ответ Маркока)
  • достаточная емкость ввода / вывода в системе

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

После этого, если вам все еще нужно больше мощности, я бы добавил в систему больше оперативной памяти, возможно, до 4 ГБ на ядро ​​(т.е. 16 ГБ, если вы используете 4 ядра), но это действительно зависит от размера вашего набора данных и схем доступа (в основном читать, в основном писать и т. д.)

Использование ЦП для процесса mysql составляет 99,7% для ОДНОГО из ваших процессоров. Если у вас более одного процессора (на что указывает "Означает ли это, что мой процессорs максимальны), то должно быть что-то еще, что связано с процессором?

Эта ветка очень хорошо это объясняет: путать-по-ЦП-значения-в-unix-топ-команда

Вы написали, что сайт

оказался очень медленным

с тех пор как? Это происходило постепенно?

Если сайт стал постепенно работать медленнее, это также может быть проблемой фрагментации БД. В этом случае, или если вы не можете создавать индексы, рассмотрите также довольно тривиальный дамп / восстановление.

Я думаю, что странный mysql, использующий только небольшую оперативную память 4,6% и почти всю системную оперативную память, используемую без запуска, поскольку TOP говорит, что выполняется 1 процесс, но это не причина перегрузки вашего процессора.

Если проблема возникла недавно, а сайт старый, я бы проверил, не перегревается ли и не замедляется ли процессор из-за BIOS. У меня была аналогичная проблема, и машина была очень медленной и использовала почти 100% ЦП на обоих ядрах, как только ЦП замедлился из-за температуры. Вы можете увидеть перегрев с помощью tail -f /var/log/syslog и, возможно, в настройке BIOS, если вы перезагрузите компьютер и проверьте температуру процессора в настройках BIOS. В моем случае BIOS сообщал о температуре процессора выше 75oC (достигнув 95oC после некоторых тестов, в которых одновременно были запущены 2 виртуальные машины). Один простой тест, который вы можете выполнить, не выключая машину, - открыть корпус и использовать вентилятор (обычный вентилятор для людей, а не для процессора) непосредственно на машине, температура должна быстро упасть, и перегрузка процессора прекратится (машина ускорится. ).

Я просто снял и почистил кулер процессора (он был почти полностью забит), и это решило проблему с сообщением BIOS о температурах процессора ниже 55 ° C, быстрой машине и отсутствии перегруженного процессора.