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

процессы замедляются после некоторого времени активной работы

У меня есть несколько заданий cron, запущенных на машине ubuntu. каждый делает довольно тяжелую нагрузку. Задачи cron - это синтаксический анализ файлов, и чем больше файл, тем больше времени им требуется на его анализ. Странно то, что если я сделаю файлы слишком большими (например, 30 МБ), скрипт зависнет. Он с энтузиазмом начинает их обрабатывать, но через какое-то время (что-то вроде 5-10 минут) загрузка процессора сильно падает, и он переходит в состояние "зомби". Если до этого процесс в htop использовал 70-80% ЦП, то после этого падения он замедляется примерно до 5-10%. средняя нагрузка тоже падает. Статус процессов иногда меняется на D в htop, что AFAIR означает зомби. Сегодня я заметил такое же поведение процессов mysql при выполнении тяжелых запросов (выполнение запроса заняло около 4 часов). задания cron - это в основном php, и во время их обработки большая часть процессора потребляет процесс php, а не mysql. поэтому я думаю, что проблема не в конкретном языке / программе, а в том, как процессы «управляются».

Единственное другое место, где я видел подобное поведение, было на моем микроэкземпляре Amazon EC2, когда после некоторого агрессивного использования процессора квота процессора вступала в силу, и все резко замедлялось.

Это выделенная машина под управлением ubuntu. в чем может быть причина?

Изменить: добавление некоторых деталей

память в порядке и вопрос подкачки не ИМХО.

iostat говорит об активности ввода-вывода: http://img13.imageshack.us/i/captureehm.png/ Мне это кажется нормальным, потому что ожидался некоторый ввод-вывод, и похоже, что процессор не "перегружен" ожиданием ввода-вывода. поправьте меня если я ошибаюсь :)

сар(1) предоставит вам данные для анализа здесь. Вы можете посмотреть на sar -A чтобы увидеть всю собранную статистику sar, а затем развернуть. Например sar -b предоставит вам статистику ввода-вывода, чтобы увидеть, не зависаете ли вы от активности диска.

Приятной особенностью sar является то, что он ведет журнал в фоновом режиме, поэтому вы можете использовать его для просмотра исторических данных, а не только текущей статистики.

Что ж, вы можете проверить, есть ли это "симпатичный", но похоже, что процесс тормозит из-за проблем с памятью или вводом-выводом. Вы можете опубликовать данные об использовании памяти?

Состояние «D» означает, что команда ожидает ввода-вывода. Это не совсем то же самое, что процесс зомби.

Проверьте, сколько оперативной памяти использует ваш процесс - если он использует слишком много и подкачивается, это вполне может проявиться в виде симптомов, которые вы видите.