Загрузка ЦП > 80% — как выполнить отладку?

Загрузка ЦП > 80% — как выполнить отладку?

Я запускаю приложение Laravel на виртуальном сервере Digital Ocean VPS с Ubuntu 14.04 и использую New Relic для мониторинга сервера.

Я получил уведомление по электронной почте о том, что загрузка моего ЦП превысила 80%. Я вошел в New Relic, и теперь он показывает загрузку моего ЦП на уровне 99% уже 18 часов. Но когда я захожу в свою оболочку и запускаю 'top', загрузка ЦП процессами не достигает даже 10%.

Что может быть не так? Какие еще команды я могу запустить, чтобы проверить реальное использование и что его так сильно использует? (Возможно, бесконечный цикл в приложении?)

Вот мой результат htop:

введите описание изображения здесь

А это htop после shift+K

введите описание изображения здесь

Любые ссылки или помощь будут высоко оценены.

решение1

Я не уверен, что происходит, но я предполагаю, что столбец %CPU отдельного процесса не говорит вам то, что вы думаете. Из man-страницы top:

  k: %CPU  --  CPU usage
  The task’s share of the elapsed CPU time since the last screen update,
  expressed as a percentage of total CPU time. 

Допустим, вы обновляетесь каждые 4 секунды. Общее время ЦП, которое он потребил за эти 2 секунды, составляет 6%за эти 4 секунды. Но, скажем, в одну из этих секунд он рванул вперед и использовал 24% процессорного времени. Я не говорю, что это происходит, но это может быть.

Я доволен topэтим. Я вижу, что использование ЦП разбито по ЦП и далее по user, sys, nice, idle, wait(по вводу/выводу), обслуживая аппаратные и программные прерывания (привет, си). Вы, вероятно, можете получить это htopтакже. Пока у вас есть 1 ЦП, который простаивает по крайней мере 20%, на самом деле беспокоиться не о чем, если только ваш вентилятор не беспокоит вас. Но если вы беспокоитесь, возможно, происходит то, что %wait и %hi/%si очень высоки, и в этом случае ни один отдельный процесс не имеет высокой загрузки ЦП, а скорее ядро ​​очень очень занято по какой-то причине.

решение2

У меня была похожая проблема, и я запустил команду TOP в фоновом режиме и перенаправил ее в текстовый файл.

топ > топ.txt &

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

решение3

Есть несколько вариантов. Я предпочитаю программу htop, которая обычно не устанавливается по умолчанию, но доступна почти для всех дистрибутивов. Она дает вам ту же информацию, что и , topно с НАМНОГО более богатым набором функций. Она отлично подходит для интерактивного поиска проблемного процесса, но не очень хороша для написания скриптов. Если вы хотите включить что-то в скрипт мониторинга, эта команда ps -eo pid,pcpu,commвам поможет. Она выводит все текущие процессы вместе с их PID и использованием ЦП в довольно простом для анализа формате.

решение4

Что может быть не так?

Первое, вы используете Laravel, который любит много памяти, а у вас ее меньше половины гига. Вы запускаете его на операционной системе, которая не поддерживается, что плохо. И вы не рассказали нам об остальном стеке (веб-сервер, PHP SAPI, версия PHP).

Связанный контент