
Я запускаю приложение 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).