Администрирование серверов Linux

Поиск зависших процессов linux на примере PHP

Борьба с зависшими процессами

Доброго времени суток, уважаемые читатели. Порой, настройки наших веб-серверов играют с нами злую шутку. Не всегда есть возможность изменять код, который хранится на сервере, скрипты устаревают, не всегда вовремя обновляются. И приходит такой момент, что скрипт зависает. Сегодня мы рассмотрим как бороться с зависшими процессами в linux, на примере php.

У нас есть сайт, на котором время от времени люди скачивают песни. Сам скрипт отдачи песни работает на PHP, т.к он писался давно и берет музыку из другого источника. Иногда, обрывается соединение, или происходит другое исключение, и он зависает, в ожидании чего-то. К сожалению, доступа к разработчикам скрипта нет, а все остальное работает, приходится бороться с такого рода проблемами.

Вывод списка процессов с сортировкой по времени работы

На помощь к нам приходит cron и не большой пример на bash, с помощью которого мы сможем найти все скрипты. Данный выводит все процессы, PID процесса, имя процесса, время работы.

ps -eo pid,fname,time --sort time

Список будет очень длинным, но некоторые программы в linux и так должны работать долго. Нас интересуют лишь определенные скрипты, которые зависают, написанные на PHP. Потому с помощью grep мы добавим через контейнер получение только процессов PHP.

ps -eo pid,fname,time --sort time | grep php

В данном списке отсортированы PHP процессы по времени запуска. Далее, если нам нужно периодически завершать такие процессы, можно на основе этого написать простой bash скрипт, который через kill, или killall -KILL название процесса будет завершать зависшие процессы.

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

Задать вопрос специалисту