Я заметил, что один из наших серверов начинает возвращать ошибки сразу после запуска logrotate, то есть в журнале ошибок nginx я вижу:
[ошибка] 8501 # 0: * 118126869 recv () не удалось (104: сброс соединения одноранговым узлом) при чтении заголовка ответа из восходящего потока, клиент: xxx.yyy.zz.ww, сервер: www.test.com, запрос: "GET /index.php HTTP / 1.1 ", восходящий поток:" fastcgi: //127.0.0.1: 9011 ", хост:" www.test.com "
Я попытался добавить действие postrotate, которое могло бы корректно перезагрузить php, но ошибка все еще возникает, наш текущий logrotate выглядит следующим образом:
/var/log/php5-fpm.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 644 root root
postrotate
[ ! -f /var/run/php5-fpm.pid ] || kill -USR2 `cat /var/run/php5-fpm.pid`
endscript
}
Конфигурация PHP выглядит следующим образом:
[www-9011]
user = www-data
group = www-data
listen = 127.0.0.1:9011
listen.backlog = 65535
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s;
pm.max_requests = 500
rlimit_files = 16384
chdir = /
catch_workers_output = no
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
Мы работаем на ubuntu 12.04 и php 5.3.10
Вместо этого отправьте USR1
Исходный код показывает, что это специально для ротации файлов, я знаю, что Ubuntu 14.04 не очень хорошо справлялся с перезагрузкой fpm (USR2), я предполагаю, что то же самое и для более старых версий.
Так что смени на
postrotate
[ ! -f /var/run/php5-fpm.pid ] || kill -USR1 `cat /var/run/php5-fpm.pid`
endscript
просто повернуть бревна
Это старый вопрос, на который пока нет ответа. Поэтому я стараюсь дать ответ тем, кто все еще ищет: logrotate
файл конфигурации говорит, что после выполнения ротации logrotate
убьет php-fpm
обработать:
postrotate
[ ! -f /var/run/php5-fpm.pid ] || kill -USR2 `cat /var/run/php5-fpm.pid`
Текущая конфигурация по умолчанию в репозиториях Ubuntu 16 - вызвать функцию php5-fpm-reopenlogs
который предназначен для ротации файлов журнала:
postrotate
/usr/lib/php5/php5-fpm-reopenlogs
Аналогично PHP 7:
postrotate
/usr/lib/php/php7.0-fpm-reopenlogs
Вот полный /etc/logrotate.d/php5-fpm
показать это postrotate
в контексте:
/var/log/php5-fpm.log {
rotate 12
weekly
missingok
notifempty
compress
delaycompress
postrotate
# invoke-rc.d php5-fpm reload > /dev/null
/usr/lib/php5/php5-fpm-reopenlogs
endscript
}