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

Как безопасно убить этот PHP-процесс?

Я установил php5 в ubuntu и WordPress. Он может работать после установки. Но через несколько дней я обнаружил, что там много процессов и много воспоминаний. Я пытаюсь использовать

ps -aux | grep www-data

и нашел около 30 таких процессов.

www-data  5066  0.0  0.0 131664   780 ?        S    16:20   0:00 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf

Я пытался

kill -9 pid

и это не сработало, снова появляется новый процесс. Итак, не могли бы вы рассказать мне, как их безопасно убить, и я не хочу, чтобы память моего vps была занята этим.

и это не сработало, снова появляется новый процесс

В самом деле? Хотя я ожидал, что появится больше процессов, убитый вами должен уйти.

Если вы хотите остановить все это, выключите демон, я не знаю, как он настроен на вашем компьютере, но здесь я бы сделал ....

/etc/init.d/php-fpm stop

Но это не способ решить проблему «Я обнаружил, что существует много процессов и занято много воспоминаний». Вам следует начать с правильного анализа трафика и профилирования кода.

Попробуйте здесь, я думаю, это та же проблема :)

Как остановить процессы Apache www-data?

«Apache, работающий как www-data, по умолчанию в Debian Lenny. Вы можете спутать единственный« родительский »процесс apache (работающий от имени root) с« дочерними »apache, выполняющими обработку HTTP-запросов (работающими как www-data). Оба« родительских » 'и' дочерние 'процессы должны выглядеть так, как будто они были запущены с помощью / usr / sbin / apache2 -k start (когда вы используете ps aux | grep apache), и единственная разница - это владелец процесса.

Для управления сценариями запуска инициализации вы можете использовать sudo sysv-rc-conf (sudo aptitude install sysv-rc-conf, если у вас его нет - это просто простая оболочка Perl, похожая на curses, для сценариев инициализации) »-Chronos

Таким образом, каждый процесс является дочерним процессом, работающим с http-запросами, если вы действительно хотите их убить, либо уничтожьте процесс с помощью sudo kill PID, либо, возможно, / usr / sbin / apache2 -k stop.

Том

Нет 100% ничего плохого в том, что вы видите. PHP - это модуль, запускаемый Apache, который контролируется пользователем. www-data. Вы видите нормальное поведение. И большая часть изменений, внесенных мной для повышения производительности, связана с конфигурациями Apache, а не с настройками PHP.

Если вы хотите лучше контролировать это поведение, есть два места для внесения изменений.

1. Отрегулируйте ограничение памяти PHP: Откройте файл php.ini, который должен находиться в /etc/php5/apache2/php.ini и отредактируйте опцию под названием memory_limit. Он должен быть установлен на 64M или 32M. Но это, по сути, максимальный предел памяти, который может использовать любой процесс PHP, связанный с каждым процессом Apache2 (см. Ниже). Так что, если вы запускаете WordPress и он хочет запускать любой процесс с 32 МБ ОЗУ, нет проблем. Если потребуется больше, скрипт завершится ошибкой, и ваш журнал ошибок Apache2 находится по адресу /var/log/apache2/error.log заполнит ошибками.

2. Настройте конфигурацию Apache в соответствии со своими потребностями: Поскольку PHP - это модуль, работающий в Apache, чем больше процессов Apache у вас запущено, тем больше памяти будет израсходовано. Если у вас стандартная установка Apache2, откройте этот файл и осмотритесь: /etc/apache2/apache2.conf. В частности, вот настройки, которые я всегда настраиваю при стандартной установке.

  • Тайм-аут: Это время ожидания между запросом, сделанным клиентом серверу, и сервером, выполняющим этот запрос. По моему опыту установка 300 секунд (5 минут) слишком высока. Я устанавливаю 120.
  • KeepAlive: Я всегда держу это, потому что это помогает Apache лучше использовать память и ресурсы. По сути, это означает, что дочерний процесс Apache не убьет себя, если клиент все еще запрашивает контент. Таким образом, один процесс может передавать данные, а затем благополучно умереть после того, как он выполнил свою работу.
  • MaxKeepAliveRequests: Это напрямую связано с KeepAlive. И я настраиваю это в зависимости от потребностей сервера. Для сред разработки я придерживаюсь минимума. Скажем, 3 или 4. Для производственной среды я обычно чувствую KeepAlive полезен только для 1/3 соединений. Поэтому я установил это значение примерно на 24 или 32. Но память вызывает беспокойство, я бы оставил это низким, поскольку чем больше KeepAlive чем больше у вас запущенных клиентов и тем больше оперативной памяти вы использовали для каждого процесса.
  • KeepAliveTimeout: Это в основном измерение того, насколько быстро можно загрузить страницу на вашем сайте. Подумайте об этом: зачем поддерживать соединение дольше того времени, которое требуется клиенту для получения контента для одной страницы? По моему опыту, установка от 2 до 5 секунд - это хорошо. Но когда для рендеринга страницы он отклоняется до 5 секунд, это означает, что что-то действительно подавляет базовую систему. Так что для меня это знак переоценить код и очистить ресурсоемкое кодирование.

    Затем перейдите к mpm_prefork_module площадь. Вот как я настраиваю свою среду разработки; это для сайта с низкой посещаемостью.

<IfModule mpm_prefork_module>
  StartServers           8
  MinSpareServers        8
  MaxSpareServers        8
  ServerLimit           16
  MaxClients            16
  MaxRequestsPerChild 2000
</IfModule>

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

  • StartServers: Сколько дочерних серверов запускается сразу под Apache.
  • MinSpareServers: Минимальное количество дочерних серверов в резерве.
  • MaxSpareServers: Максимальное количество дочерних серверов, которые нужно оставить в резерве.
  • ServerLimit: Верхний предел количества дочерних серверов.
  • MaxClients: Максимальное количество клиентов, которое может существовать в любой момент.
  • MaxRequestsPerChild: Этот параметр помогает убить дочерние процессы после определенного количества запросов. Это помогает предотвратить утечку памяти, поскольку технически дочерние процессы могут работать вечно до следующего перезапуска Apache2. Мне хотелось бы иметь средство защиты, чтобы я мог спать по ночам, даже когда разработчик развертывает небрежный код.

Надеюсь это поможет!