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

php и mysqld работают часами. Это нормально?

У меня есть сервер Jenkins, который периодически перестраивает приложение PHP / mySQL. Каждый раз, когда отправляется новый код PHP, это задание удаляет все таблицы в соответствующей базе данных, а затем воссоздает их со структурой, указанной в установщике PHP. По большей части это работает нормально, хотя иногда и зависает.

Дело в том, что я не уверен, как создаются / уничтожаются процессы mysqld / php. Я заметил, что у меня часто бывают процессы php, которые выполняются более часа, и я постоянно иметь хотя бы один процесс mysqld, который работает часами / днями. Взгляни на мой top вывод:

Разве вы не должны получать новый процесс каждый раз, когда запрашивается страница? И разве этот процесс не должен быть уничтожен после доставки страницы? Я думал, что PHP работает именно так, я не уверен в mysqld. У меня есть строка в php.ini, в которой говорится max_execution_time = 30, поэтому я не понимаю, как этот php-процесс может длиться больше часа.

Если у вас не настроено задание Jenkins для запуска и остановки mysqld каждый раз, когда оно запускается, вы не увидите, что оно исчезает из списка процессов. mysqld - это демон, который всегда работает в фоновом режиме, в зависимости от того, как он был настроен и установлен. Стандартная установка пакета позволит службе запускаться при загрузке.

Кроме того, mysqld не будет разветвлять новые процессы. Все запросы будут обрабатываться этим единственным процессом.

Что касается процесса PHP, top команда не отображает ВРЕМЯ в реальном (часовом) времени. Он сообщает о процессоре. У вас может быть процесс, работающий несколько часов, но при этом он использует всего несколько минут или даже секунд процессорного времени. Кроме того, он сообщает время ЦП как m: ss.t (минуты: секунды. десятки секунд).