n0n4m3
Эксперт
- Сообщения
- 321
- Реакции
- 81
Сначала нам нужно взглянуть на файл конфигурации по умолчанию для PHP-FPM. Вы хотите найти раздел, который выглядит следующим образом:
Решение
Теперь разбор полетов!
Все настройки индивидуально под мой сервер.
В Nginx нужно вставлять правила на урл после
иначе правила работать не будут
Пример:
Оптимизация Nginx Centos 7
Файл настроек обычно выглядит так:
Вся конфигурация
Самое важное
Самым большим эффектом на посетителей окажет включение сжатия gzip.
Код:
; Выберите, как менеджер процессов будет контролировать количество дочерних процессов.
; Возможные значения:
; static - фиксированное число (pm.max_children) дочерних процессов;
; динамический - число дочерних процессов устанавливается динамически на основе
; следующие директивы:
; pm.max_children - максимальное количество детей, которые могут
; быть живым в то же время.
; pm.start_servers - количество детей, созданных при запуске.
; pm.min_spare_servers - минимальное количество детей в режиме ожидания
; состояние (ожидает обработки). Если номер
; «холостых» процессов меньше, чем это
; номер, то некоторые дети будут созданы.
; pm.max_spare_servers - максимальное количество детей в «простое»
; состояние (ожидает обработки). Если номер
; «холостых» процессов больше, чем это
; номер, тогда некоторые дети будут убиты.
; Примечание: это значение обязательно.
pm = динамический
; Количество дочерних процессов, которые будут созданы, когда pm установлен на «static» и
; максимальное количество дочерних процессов, которые будут созданы, когда pm установлен на 'dynamic'.
; Это значение устанавливает ограничение на количество одновременных запросов, которые будут
; служил. Эквивалентно директиве ApacheMaxClients с mpm_prefork.
; Эквивалент переменной среды PHP_FCGI_CHILDREN в исходном PHP
; CGI.
; Примечание. Используется, когда pm имеет значение «static» или «dynamic».
; Примечание: это значение обязательно.
pm.max_children = 60
; Количество дочерних процессов, созданных при запуске.
; Примечание. Используется только в том случае, если для pm установлено значение «dynamic».
; Значение по умолчанию: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 20
; Желаемое минимальное количество незанятых серверных процессов.
; Примечание. Используется только в том случае, если для pm установлено значение «dynamic».
; Примечание. Обязательно, если для параметра pm установлено значение «dynamic».
pm.min_spare_servers = 20
; Желаемое максимальное количество незанятых серверных процессов.
; Примечание. Используется только в том случае, если для pm установлено значение «dynamic».
; Примечание. Обязательно, если для параметра pm установлено значение «dynamic».
pm.max_spare_servers = 35
; Количество запросов, которые каждый дочерний процесс должен выполнить перед повторным вызовом.
; Это может быть полезно для обхода утечек памяти в сторонних библиотеках. За
; бесконечная обработка запроса указывает '0'. Эквивалент PHP_FCGI_MAX_REQUESTS.
; Значение по умолчанию: 0
pm.max_requests = 500
Код:
pm = dynamic
pm.max_children = 30
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500
Код:
pm.max_children = необходимо вычислить сколько памяти занимает один процесс, потом разделить тот объем памяти который вы хотите выделить для php5-fpm, на объем одного процессора, получите количество pm.max_children (наример 10000мб/50мб=200)
pm.min_spare_servers = этот параметр начать с количество ядер процессора умножить на 2 (пример 4 ядра * 2 = 8)
pm.max_spare_servers = этот параметр количество ядер процессора * 4 (пример 4 *4 = 16)
pm.start_servers = этот параметр вычисляется по формуле (pm.min_spare_servers+pm.max_spare_servers)/2 (пример (8+16)/2=12)
Итого на выходе получаем примерно конфигурацию для 4 ядерного процессора 10гб памяти (выделенные только под PHP5-FPM, возможно у вас 16Гб общей)
pm.max_children = 200
pm.start_servers = 12
pm.min_spare_servers = 8
pm.max_spare_servers = 16
В Nginx нужно вставлять правила на урл после
Код:
location / {
Пример:
Код:
location / {
rewrite ^/page/([0-9]+)(/?)$ /index.php?cstart=$1 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html$" /index.php?mod=print&subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html$" /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 last;
rewrite ^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ /index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 last;
rewrite ^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html$ /index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 last;
rewrite ^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html$ /index.php?mod=print&news_page=$2&newsid=$3&seourl=$4&seocat=$1 last;
rewrite ^/([^.]+)/([0-9]+)-(.*).html$ /index.php?newsid=$2&seourl=$3&seocat=$1 last;
rewrite ^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ /index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 last;
rewrite ^/page,([0-9]+),([0-9]+)-(.*).html$ /index.php?newsid=$2&news_page=$1&seourl=$3 last;
rewrite ^/print:page,([0-9]+),([0-9]+)-(.*).html$ /index.php?mod=print&news_page=$1&newsid=$2&seourl=$3 last;
rewrite ^/([0-9]+)-(.*).html$ /index.php?newsid=$1&seourl=$2 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2&day=$3 last;
rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&day=$3&cstart=$4 last;
rewrite "^/([0-9]{4})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2 last;
rewrite "^/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&cstart=$3 last;
rewrite "^/([0-9]{4})(/?)+$" /index.php?year=$1 last;
rewrite "^/([0-9]{4})/page/([0-9]+)(/?)+$" /index.php?year=$1&cstart=$2 last;
rewrite ^/tags/([^/]*)(/?)+$ /index.php?do=tags&tag=$1 last;
Код:
/etc/nginx/nginx.conf
Код:
user www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
...
}
Код:
worker_processes auto;
events {
use epoll;
worker_connections 1024;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log /var/log/nginx/error.log crit;
keepalive_timeout 30;
keepalive_requests 100;
client_max_body_size 1m;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 2;
sendfile on;
tcp_nodelay on;
tcp_nopush on;
gzip on;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
Самым большим эффектом на посетителей окажет включение сжатия gzip.