LINUX.ORG.RU
ФорумAdmin

На чем виснет pipe_w ?


0

1

Добрый день!

На работающем без проблем уже лет 8 сервере стал барахлить cron. Задания, прописанные в crontab-е выполняются медленно, постоянно зависая на

5 S 0 6627 2729 0 80 0 - 1414 pipe_w ? 00:00:00 crond

Также регулярно задания вообще превращаются в зомби

5 S 0 26250 2729 0 80 0 - 1415 pipe_w ? 00:00:00 crond

0 Z 0 26252 26250 0 80 0 - 0 exit ? 00:00:00 sh <defunct>

Вопрос: почему это происходит?

Попутно обнаружил любопытный факт: команда, скажем ls -l на большом каталоге выводит содержимое мгновенно, а команда iptables -t nat -L на каждой строчке зависает на 10 - 15 секунд.

iptables -t nat -L на каждой строчке зависает на 10 - 15 секунд.

Потому что не указана опция -n и идёт DNS-запрос с таймаутом?

К чему относятся строки с pipe_w не понял, если это из вывода ps, то дайте кусок дерева процессов, чтобы было понятно, кто кого запустил.

mky ★★★★★
()
Ответ на: комментарий от mky

Добрый день!

С DNS понятно. Спасибо. Но почему он не вис предыдущие 5 лет?

Дерево процессов выглядит так:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

1 S 0 2729 1 0 80 0 - 1274 - ? 00:00:02 crond

5 S 0 18576 2729 0 80 0 - 1415 pipe_w ? 00:00:00 crond

0 S 0 18579 18576 0 80 0 - 644 wait ? 00:00:00 run-parts

0 S 0 23739 18579 0 80 0 - 561 pipe_w ? 00:00:00 awk

constrn
() автор топика
Ответ на: комментарий от constrn

Но почему он не вис предыдущие 5 лет?

Вас надо спросить. Поменялись настроки в /etc/resolv.conf или настройки DNS-сервера, что он раньше сразу «отфутболивал» с ошибкой при реверсе ip-адресов, а сейчас честно резолвить.

Теперь, если в дереве процессов вывести не только имена процессов, но и аргументы, станет ещё понятнее.

А так, crond запускает скрипт и читает от него данные из stderr, если в этом скрипте нафоркались ещё процессы, а сам скрипт завершил работу, то он будет висеть в состоянии зомби, так как дескриптор stderr будет открыт этим процессами и crond будет ждать из него данных. Нужно разбираться какой «хвост» скрипта чего ждёт. И, наверное, нужно смотреть процессы группируя по идентификатору сессии, чтобы правильно соотнести запускаемые в фоне из bash-скрипта процессы с этим скриптом.

crond не влияет на скорость выполнения запущенных им скриптов, поэтому если скрипты из-под cron'а работают медленно, нужно смотреть эти скрипты.

mky ★★★★★
()
Ответ на: комментарий от mky

М-да, «Цветы для Элджернона» рулят. Последний вопрос - как сделать, чтобы DNS серевер сразу отфутболивал? Спасибо!

constrn
() автор топика
Ответ на: комментарий от constrn

Ну, если вы понимаете о чём просите и к чему это приведёт, то просто пропишите на DNS-сервер, что он отвечает за всю зону in-addr.arpa и создайте файл этой зоны без записей.

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо! Все работает! Видимо cron вис на sarg или каком-то самописном скрипте, завязанном на DNS. Вы мне здорово помогли.

constrn
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.