Потеря производительности через 30 минут
Этот сбил меня с толку. У меня Ubuntu 14.04, 3 дня назад (2014-20-10) он начал тормозить.
Я воспроизвел его, открыв gedit, а затем закрыв gedit. Когда проблема активна, она закрывает пустой файл примерно на 2 секунды, в то время как без проблемы это всегда происходит мгновенно - все остальное действует аналогичным образом.
top сообщает, что нет никакой необычной активности, когда происходит замораживание, но то же самое, и то же самое.
Эта проблема возникает только после 30 минут безотказной работы. Я могу гарантировать, что при 29 минутах безотказной работы я не смог воспроизвести ее, при 31 минуте безотказной работы я мог воспроизвести это последовательно (с использованием вышеуказанного метода, никакие приложения не запускались, кроме терминала и htop) и управлял повторить это 4 или 5 раз (выключение, загрузка и ожидание полчаса - что было приятно).
Проблема сохраняется даже после перезагрузки, но может быть сброшена путем выключения и включения питания. Какая часть Ubuntu сохраняет состояние после перезагрузки, но не выключается?
Соответствующими журналами для этого периода являются syslog, auth.log и Xorg.0.log (путем проверки содержимого /var/log за время, измененное в указанном диапазоне)
системный журнал:
Oct 22 17:21:36 raiden NetworkManager[1102]: <warn> nl_recvmsgs() error: (-33) Dump inconsistency detected, interrupted
Oct 22 17:39:01 raiden CRON[3284]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
Oct 22 18:09:01 raiden CRON[3370]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
authlog:
Oct 22 17:39:01 raiden CRON[3283]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 22 17:39:01 raiden CRON[3283]: pam_unix(cron:session): session closed for user root
Oct 22 18:09:01 raiden CRON[3369]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 22 18:09:01 raiden CRON[3369]: pam_unix(cron:session): session closed for user root
Oct 22 18:17:01 raiden CRON[3495]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 22 18:17:01 raiden CRON[3495]: pam_unix(cron:session): session closed for user root
Xorg.0.log: (возможно, я просто разбудил компьютер)
[ 3466.727] (II) intel(0): switch to mode 1366x768@60.0 on LVDS1 using pipe 0, position (0, 900), rotation normal, reflection none
[ 3466.880] (II) intel(0): switch to mode 1600x900@60.0 on VGA1 using pipe 1, position (0, 0), rotation normal, reflection none
Ни один из них не указывает на что-то плохое, и последующие шаги по воспроизведению проблемы не указывают никаких изменений в журналах, так что это, скорее всего, были невинные журналы.
Я предполагаю, что есть 3 возможных источника этой проблемы:
Установка программного обеспечения: я установил что-то хитрое
Я сделал:
- история | grep apt-get' - нет установок в этот период времени
- Посмотрел историю синаптического менеджера пакетов - ничего за тот период времени
- История центра программного обеспечения - последнее обновление было несколько недель назад (возникла проблема с зависимостью, поэтому я не делал никаких обновлений некоторое время)
- Я установил Skype для Ubuntu примерно в это время, но нет никаких признаков того, что он вызван Skype (все равно удалил)
Cron работа идет не так
Проверял cronjobs в crontab, /etc/cron.d /etc/cron.daily и ежечасно ничего не указывает на то, что это что-то там, только каждые 30 минут выполняется работа cron PHP, но если бы это был cron, он делал бы это в определенные моменты круглосуточно, а не 30 минут после запуска.
Анализ новых процессов, которые были запущены между состоянием без замедления и состоянием замедления, позволяет предположить, что новые процессы не запускаются (первый тест показал наличие потока kworker, но, скорее всего, это просто совпадение). Я предполагаю, что это должно означать, что это либо существующий процесс, который вызвал его, либо что-то еще.
Вредоносное
Из-за его неуловимости и таинственного 30-минутного отсутствия проблемы (30 минут кажется выбранным человеком количеством времени), я начал думать, что это может быть какое-то вредоносное ПО, однако маловероятно, что это может быть (не сделал обновления для некоторое время и несколько открытых портов). Итак, запустил rkhunter (rootkit finder), но ничего плохого не было найдено.
Другие вещи, которые я пробовал:
- Отключение определенных компонентов compiz - без изменений
- Перезапуск compiz - без изменений
- Снятие галочки со всех компонентов compiz - без изменений (за исключением моей борьбы, чтобы снова использовать компьютер)
- Игра на разных музыкальных инструментах, ожидая времени безотказной работы до 30 минут, а затем просматривая результаты top и htop на предмет любых подозрительных изменений - ничего странного
У кого-нибудь было что-то похожее на это, или он мог бы указать мне правильное направление, если вы это сделаете, я несколько раз нажму на кнопку увеличения голоса в вашем ответе (я позабочусь, чтобы это было нечетное число)
2 ответа
Есть несколько способов настроить cron для запуска задания через 30 минут после запуска. Дженкинс делает это путем хеширования функции и использования H/30 * * * *
например. Это также может быть нить, спящая 30 минут и порождающая тихий процесс убийства процессора.
Некоторые идеи там:
Вы пробовали htop как root? Некоторые процессы могут быть невидимыми, я видел это особенно в Debian.
Вы пытались выйти / снова войти, когда проблема возникает? Это может быть оконный менеджер или проблема с сессией.
Если выход из системы / вход в систему не работает, вы можете попытаться перезапустить менеджер сеансов. Я думаю, что это Lightdm по умолчанию, так sudo service lightdm restart
должен сделать это.
Это было вызвано тем, что данные SMART были включены для данного диска.
Отключение данных SMART решило это:
sudo smartctl --smart=off /dev/sda
Предположительно, он продолжал повторять какую-то внутреннюю самопроверку через 30 минут после того, как диск развернулся и зациклился; так как это происходило на аппаратном уровне, остальная часть компьютера не знала, что происходит, поэтому я не вижу ни одного процесса, в частности ответственного за блокировку ввода-вывода, и никаких процессов, занимающих ресурсы.