Инструменты пользователя

Инструменты сайта


service:php

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:php [14.06.2023 06:46] – [Репозиторий для Debian] viacheslavservice:php [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +===== PHP =====
 +==== Репозиторий для Debian ====
 +<code bash>
 +#!/bin/sh
 +# To add this repository please do:
  
 +if [ "$(whoami)" != "root" ]; then
 +    SUDO=sudo
 +fi
 +
 +${SUDO} apt-get update
 +${SUDO} apt-get -y install lsb-release ca-certificates curl
 +${SUDO} curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
 +${SUDO} sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 +${SUDO} apt-get update
 +</code>
 +https://packages.sury.org/php/README.txt
 +
 +==== Файл phpinfo ====
 +Для вывода информации о PHP через браузер
 +<code php>
 +<?php
 + phpinfo();
 + ?>
 +</code>
 +==== server reached pm.max_children setting ====
 +Веб-сервер перестаёт отвечать, потом опять работает. В логах:
 +<code bash>
 +tail /var/log/php8.1-fpm.log
 +</code>
 +<code>
 +[03-Aug-2021 18:57:39] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 13 total children
 +[03-Aug-2021 22:01:32] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 16 total children
 +[03-Aug-2021 22:01:33] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 17 total children
 +[03-Aug-2021 22:01:52] WARNING: [pool www] server reached pm.max_children setting (20), consider raising it
 +[04-Aug-2021 09:32:25] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 19 total children
 +[04-Aug-2021 09:32:26] WARNING: [pool www] server reached pm.max_children setting (20), consider raising it
 +[04-Aug-2021 10:41:00] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 16 total children
 +[04-Aug-2021 10:41:01] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 17 total children
 +[04-Aug-2021 10:41:21] WARNING: [pool www] server reached pm.max_children setting (20), consider raising it
 +[04-Aug-2021 10:51:58] WARNING: [pool www] server reached pm.max_children setting (20), consider raising it
 +</code>
 +
 +Чтобы заранее предупредить ошибку\\
 +<color #ed1c24>[pool www] pm.start_servers(20) must not be less than pm.min_spare_servers(1) and not greater than pm.max_spare_servers(10)</color>,\\
 +необходимо
 +  * Посмотреть (top), какая версия php-fpm работает, и править соотв. конфиг
 +  * Значение **pm.start_servers** установить в 2 раза больше кол-ва ядер процессора
 +  * **pm.max_spare_servers** установить в 2 раза больше **pm.start_servers**
 +  * **pm.max_children** вычислить от кол-ва памяти, разделённого на объём одного потока, например, 16000 / 70 ≈ 200
 +  * **pm.max_requests** ограничить, например, 500
 +
 +Объём потока (RSS, это в килобайтах), т. е., примерно 70 МБ.
 +<code bash>
 +root@vmls-www1:~# ps -ylC php-fpm8.1 --sort:rss -u www-data
 +S   UID     PID    PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
 +S    33    1059     828  0  80   0 68164 68113 skb_wa ?        00:00:03 php-fpm8.1
 +S    33    1055     828  0  80   0 68984 68042 skb_wa ?        00:00:03 php-fpm8.1
 +S    33    1056     828  0  80   0 69056 68015 skb_wa ?        00:00:03 php-fpm8.1
 +</code>
 +
 +<code bash>
 +# Выяснить текущие значения
 +cat /etc/php/8.1/fpm/pool.d/www.conf |egrep '^pm.max_children|^pm.start_servers|^pm.max_spare_servers|^pm.max_requests'
 +pm.max_children = 7
 +pm.start_servers = 2
 +pm.max_spare_servers = 3
 +;pm.max_requests = 500
 +
 +sed -i '
 +/pm.max_children =/c pm.max_children = 200
 +/pm.start_servers =/c pm.start_servers = 16
 +/pm.max_spare_servers =/c pm.max_spare_servers = 32
 +/pm.max_requests =/c pm.max_requests = 500' /etc/php/8.1/fpm/pool.d/www.conf
 +</code>
 +https://stackoverflow.com/questions/25097179/warning-pool-www-seems-busy-you-may-need-to-increase-pm-start-servers-or-pm\\
 +https://habr.com/ru/companies/slurm/articles/460511/
 +
 +==== Включить логи в докере ====
 +Стандартно логи в STDOUT/STDERR не пишутся. Чтобы включить для php-fpm, нужно создать файл
 +<file ini /etc/php83/php-fpm.d/logging.conf>
 +[global]
 +error_log = /proc/self/fd/2
 +
 +[www]
 +access.log = /proc/self/fd/2
 +
 +catch_workers_output = yes
 +decorate_workers_output = no
 +</file>
 +https://mateuszcholewka.com/post/php-logs-in-docker/

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki