Re: Nginx and logrotate
Продолжение исторрии: # la /var/log/nginx/ | grep access.log -rw-r--r-- 1 nginx root0 Aug 9 03:10 access.log -rw-r--r-- 1 nginx root 1.1G Aug 4 03:10 access.log-20130804 -rw-r--r-- 1 nginx root 2.5G Aug 6 03:10 access.log-20130805 -rw-r--r-- 1 nginx root 2.5G Aug 8 01:31 access.log-20130807 -rw-r--r-- 1 nginx root 20M Aug 8 03:10 access.log-20130808 -rw-r--r-- 1 nginx root 1.5G Aug 9 12:03 access.log-20130809 Сейчас все пишется в access.log-20130809 На днях после изменения настроек php-fpm полезли ошибки: /var/log/nginx/error.log:2013/08/07 23:49:53 [error] 1973#0: *16067909 FastCGI sent in stderr: the log buffer is full (1024). The access log request has been truncated while reading response header from upstream Я добавил: access_log /var/log/nginx/access.log main buffer=2k; Ошибки прекратились, но сегодня после очередной ротации снова вылезло: /var/log/nginx/error.log-20130809:2013/08/09 10:09:35 [error] 23100#0: *479024 FastCGI sent in stderr: the log buffer is full (1024). The access log request has been truncated Есть какие=то идеи? Попутный вопрос: В документации по access_log http://nginx.org/ru/docs/http/ngx_http_log_module.html написано: Размер буфера должен быть не больше размера атомарной записи в дисковый файл. Для FreeBSD этот размер неограничен. Я правильно понимаю, что для Linux размер буфера не должен быть больше размера блока FS? # tune2fs -l /dev/sda1 | grep 'Block size' Block size: 4096 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
On Friday 09 August 2013 13:12:17 Sergey Kobzar wrote: Продолжение исторрии: # la /var/log/nginx/ | grep access.log -rw-r--r-- 1 nginx root0 Aug 9 03:10 access.log -rw-r--r-- 1 nginx root 1.1G Aug 4 03:10 access.log-20130804 -rw-r--r-- 1 nginx root 2.5G Aug 6 03:10 access.log-20130805 -rw-r--r-- 1 nginx root 2.5G Aug 8 01:31 access.log-20130807 -rw-r--r-- 1 nginx root 20M Aug 8 03:10 access.log-20130808 -rw-r--r-- 1 nginx root 1.5G Aug 9 12:03 access.log-20130809 Сейчас все пишется в access.log-20130809 На днях после изменения настроек php-fpm полезли ошибки: /var/log/nginx/error.log:2013/08/07 23:49:53 [error] 1973#0: *16067909 FastCGI sent in stderr: the log buffer is full (1024). The access log request has been truncated while reading response header from upstream Я добавил: access_log /var/log/nginx/access.log main buffer=2k; Ошибки прекратились, но сегодня после очередной ротации снова вылезло: /var/log/nginx/error.log-20130809:2013/08/09 10:09:35 [error] 23100#0: *479024 FastCGI sent in stderr: the log buffer is full (1024). The access log request has been truncated Есть какие=то идеи? Ошибки на стороне php-fpm никакого отношения к access_log на стороне nginx не имеют. Не говоря уж о том, что и в случае access_log в nginx-е, параметр buffer он вообще про другое. Попутный вопрос: В документации по access_log http://nginx.org/ru/docs/http/ngx_http_log_module.html написано: Размер буфера должен быть не больше размера атомарной записи в дисковый файл. Для FreeBSD этот размер неограничен. Я правильно понимаю, что для Linux размер буфера не должен быть больше размера блока FS? # tune2fs -l /dev/sda1 | grep 'Block size' Block size: 4096 Там много факторов, начиная от версии ядра и заканчивая типом FS. Будь ответ настолько простым - мы бы указали это в документации. -- Валентин Бартенев http://nginx.org/en/donation.html ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
08.08.2013 00:15, Sergey Kobzar пишет: On 08/07/13 20:56, Вячеслав Кокорин wrote: 07.08.2013, в 21:06, Sergey Kobzar sergey.kob...@itcraft.org написал(а): Продолжение истории: # ls -alh /var/log/nginx/ total 8.8G drwxr-xr-x 2 nginx root 4.0K Aug 7 03:10 . drwxr-xr-x 11 root root 4.0K Aug 7 03:10 .. -rw-r--r-- 1 nginx root0 Aug 7 03:10 access.log -rw-r--r-- 1 nginx root 1.2G Aug 2 03:10 access.log-20130802 -rw-r--r-- 1 nginx root 1.2G Aug 3 03:10 access.log-20130803 -rw-r--r-- 1 nginx root 1.1G Aug 4 03:10 access.log-20130804 -rw-r--r-- 1 nginx root 2.5G Aug 6 03:10 access.log-20130805 -rw-r--r-- 1 nginx root 2.2G Aug 7 19:59 access.log-20130807 ... Сейчас логи складываются в access.log-20130807. + отсутствует access.log-20130806. cat /etc/logrotate.d/nginx /var/log/nginx/*.log { daily rotate 5 missingok nocompress sharedscripts postrotate test -r /run/nginx.pid kill -USR1 `cat /run/nginx.pid` endscript } У вас PID файлы точно в /run ? Обычно это /var/run Угу: # la /var/run lrwxrwxrwx 1 root root 4 Jan 23 2013 /var/run - /run # ps ax | grep nginx 1965 ?Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 1966 ?S 35:55 nginx: worker process 1967 ?S 35:37 nginx: worker process 1969 ?S 35:08 nginx: worker process 1970 ?S 34:57 nginx: worker process 1971 ?S 34:55 nginx: worker process 1972 ?S 35:12 nginx: worker process 1973 ?S 35:11 nginx: worker process 1974 ?S 36:01 nginx: worker process # cat /run/nginx.pid 1965 Сегодня утром получил сообщение от cron'а: gzip: stdin: file size changed while zipping gzip: stdin: file size changed while zipping Но так, как в /etc/logrotate.d/nginx есть nocompress, то есть подозрение, что это общесистемное. Any ideas? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Здравствуйте, а можно увидеть вывод команды logrotate -d /etc/logrotate.conf ? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
On 08/08/13 10:43, Boris Talovikov wrote: cat /etc/logrotate.d/nginx /var/log/nginx/*.log { daily rotate 5 missingok nocompress sharedscripts postrotate test -r /run/nginx.pid kill -USR1 `cat /run/nginx.pid` endscript } У вас PID файлы точно в /run ? Обычно это /var/run Угу: # la /var/run lrwxrwxrwx 1 root root 4 Jan 23 2013 /var/run - /run # ps ax | grep nginx 1965 ?Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 1966 ?S 35:55 nginx: worker process 1967 ?S 35:37 nginx: worker process 1969 ?S 35:08 nginx: worker process 1970 ?S 34:57 nginx: worker process 1971 ?S 34:55 nginx: worker process 1972 ?S 35:12 nginx: worker process 1973 ?S 35:11 nginx: worker process 1974 ?S 36:01 nginx: worker process # cat /run/nginx.pid 1965 Сегодня утром получил сообщение от cron'а: gzip: stdin: file size changed while zipping gzip: stdin: file size changed while zipping Но так, как в /etc/logrotate.d/nginx есть nocompress, то есть подозрение, что это общесистемное. Any ideas? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru Здравствуйте, а можно увидеть вывод команды logrotate -d /etc/logrotate.conf ? Ну вот сегодня отротировалось все нормально: -rw-r--r-- 1 nginx root 268M Aug 8 11:32 access.log -rw-r--r-- 1 nginx root 1.2G Aug 3 03:10 access.log-20130803 -rw-r--r-- 1 nginx root 1.1G Aug 4 03:10 access.log-20130804 -rw-r--r-- 1 nginx root 2.5G Aug 6 03:10 access.log-20130805 -rw-r--r-- 1 nginx root 2.5G Aug 8 01:31 access.log-20130807 -rw-r--r-- 1 nginx root 20M Aug 8 03:10 access.log-20130808 # logrotate -d /etc/logrotate.conf reading config file /etc/logrotate.conf including /etc/logrotate.d reading config file elog-save-summary reading config file exim reading config file munin reading config file mysql reading config file nginx reading config file openrc reading config file php-fpm reading config file rsyncd reading config file sphinx reading config file syslog-ng Handling 15 logs ... rotating pattern: /var/log/nginx/*.log after 1 days (5 rotations) empty log files are not rotated, old logs are removed considering log /var/log/nginx/default-ssl_access.log log does not need rotating considering log /var/log/nginx/default-ssl_error.log log does not need rotating considering log /var/log/nginx/access.log log does not need rotating considering log /var/log/nginx/error.log log does not need rotating Ротацию логов для других сервисов поскипал. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
Продолжение истории: # ls -alh /var/log/nginx/ total 8.8G drwxr-xr-x 2 nginx root 4.0K Aug 7 03:10 . drwxr-xr-x 11 root root 4.0K Aug 7 03:10 .. -rw-r--r-- 1 nginx root0 Aug 7 03:10 access.log -rw-r--r-- 1 nginx root 1.2G Aug 2 03:10 access.log-20130802 -rw-r--r-- 1 nginx root 1.2G Aug 3 03:10 access.log-20130803 -rw-r--r-- 1 nginx root 1.1G Aug 4 03:10 access.log-20130804 -rw-r--r-- 1 nginx root 2.5G Aug 6 03:10 access.log-20130805 -rw-r--r-- 1 nginx root 2.2G Aug 7 19:59 access.log-20130807 ... Сейчас логи складываются в access.log-20130807. + отсутствует access.log-20130806. cat /etc/logrotate.d/nginx /var/log/nginx/*.log { daily rotate 5 missingok nocompress sharedscripts postrotate test -r /run/nginx.pid kill -USR1 `cat /run/nginx.pid` endscript } Сегодня утром получил сообщение от cron'а: gzip: stdin: file size changed while zipping gzip: stdin: file size changed while zipping Но так, как в /etc/logrotate.d/nginx есть nocompress, то есть подозрение, что это общесистемное. Any ideas? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
On 08/07/13 20:56, Вячеслав Кокорин wrote: 07.08.2013, в 21:06, Sergey Kobzar sergey.kob...@itcraft.org написал(а): Продолжение истории: # ls -alh /var/log/nginx/ total 8.8G drwxr-xr-x 2 nginx root 4.0K Aug 7 03:10 . drwxr-xr-x 11 root root 4.0K Aug 7 03:10 .. -rw-r--r-- 1 nginx root0 Aug 7 03:10 access.log -rw-r--r-- 1 nginx root 1.2G Aug 2 03:10 access.log-20130802 -rw-r--r-- 1 nginx root 1.2G Aug 3 03:10 access.log-20130803 -rw-r--r-- 1 nginx root 1.1G Aug 4 03:10 access.log-20130804 -rw-r--r-- 1 nginx root 2.5G Aug 6 03:10 access.log-20130805 -rw-r--r-- 1 nginx root 2.2G Aug 7 19:59 access.log-20130807 ... Сейчас логи складываются в access.log-20130807. + отсутствует access.log-20130806. cat /etc/logrotate.d/nginx /var/log/nginx/*.log { daily rotate 5 missingok nocompress sharedscripts postrotate test -r /run/nginx.pid kill -USR1 `cat /run/nginx.pid` endscript } У вас PID файлы точно в /run ? Обычно это /var/run Угу: # la /var/run lrwxrwxrwx 1 root root 4 Jan 23 2013 /var/run - /run # ps ax | grep nginx 1965 ?Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 1966 ?S 35:55 nginx: worker process 1967 ?S 35:37 nginx: worker process 1969 ?S 35:08 nginx: worker process 1970 ?S 34:57 nginx: worker process 1971 ?S 34:55 nginx: worker process 1972 ?S 35:12 nginx: worker process 1973 ?S 35:11 nginx: worker process 1974 ?S 36:01 nginx: worker process # cat /run/nginx.pid 1965 Сегодня утром получил сообщение от cron'а: gzip: stdin: file size changed while zipping gzip: stdin: file size changed while zipping Но так, как в /etc/logrotate.d/nginx есть nocompress, то есть подозрение, что это общесистемное. Any ideas? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
Валентин, спасибо On 08/01/13 01:14, Валентин Бартенев wrote: https://bugs.gentoo.org/show_bug.cgi?id=473036 1. upstream explained it and accepted the bug report, this is now on their todo-list - это действительно так? 2. # la /var/log/ | grep nginx drwxr-x--- 2 rootroot 12K Aug 1 03:10 nginx Т.е. фикс должен быть вида chown nginx /var/log/nginx? 3. Какой сигнал при ротации все же правильнее слать? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
On 08/01/13 05:41, ad...@sysadmins.el.kg wrote: У меня (RHEL 6) в качестве postrotate-команды используется эта: /etc/init.d/nginx reload /dev/null 2/dev/null || true в скрипте /etc/init.d/nginx в функции отвечающей за reload используется killproc $nginx -HUP Попробуйте сменить -USR1 в вашей команде на -HUP? Вот так это выглядит целиком: /var/log/nginx/*log { missingok compress notifempty sharedscripts postrotate /sbin/service nginx reload /dev/null 2/dev/null || true endscript } Хочется услышать мнение разработчиков, какой сингал правильнее посылать при ротации логов. Перестартовать мастер процесс - как-то не фонтан при high load. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
01.08.2013, 13:34, Sergey Kobzar sergey.kob...@itcraft.org: On 08/01/13 05:41, ad...@sysadmins.el.kg wrote: У меня (RHEL 6) в качестве postrotate-команды используется эта: /etc/init.d/nginx reload /dev/null 2/dev/null || true в скрипте /etc/init.d/nginx в функции отвечающей за reload используется killproc $nginx -HUP Попробуйте сменить -USR1 в вашей команде на -HUP? Вот так это выглядит целиком: /var/log/nginx/*log { missingok compress notifempty sharedscripts postrotate /sbin/service nginx reload /dev/null 2/dev/null || true endscript } Хочется услышать мнение разработчиков, какой сингал правильнее посылать при ротации логов. Перестартовать мастер процесс - как-то не фонтан при high load. мнение разработчиков можно узнать, прочитав nginx(8) nginx -s reopen - переоткроет логи ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
On 08/01/13 12:20, Maxim Dounin wrote: Hello! On Thu, Aug 01, 2013 at 10:27:39AM +0300, Sergey Kobzar wrote: Валентин, спасибо On 08/01/13 01:14, Валентин Бартенев wrote: https://bugs.gentoo.org/show_bug.cgi?id=473036 1. upstream explained it and accepted the bug report, this is now on their todo-list - это действительно так? Ребята в очередной раз пришли с идеей, что надо не переоткрывать логи рабочими процессами, а посылать им открытый файловый дескриптор из мастера. Это часть посылать была accepted, т.к. в trac'е у нас её до сих пор не было (вопрос обсуждался столько раз, что даже и в голову никому не приходило заводить это в trac'е). Всё остальное - было explained. http://trac.nginx.org/nginx/ticket/376 2. # la /var/log/ | grep nginx drwxr-x--- 2 rootroot 12K Aug 1 03:10 nginx Т.е. фикс должен быть вида chown nginx /var/log/nginx? Да. 3. Какой сигнал при ротации все же правильнее слать? USR1 - правильный сигнал, предназначенный специально для ротации логов. Максим, спасибо большое за ответ. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx and logrotate
01.08.2013 03:07, Sergey Kobzar пишет: Linux 3.8.13-gentoo x86_64 nginx-1.4.1-r2 logrotate-3.8.4 cat /etc/logrotate.d/nginx: /var/log/nginx/*.log { daily rotate 5 missingok nocompress sharedscripts postrotate test -r /run/nginx.pid kill -USR1 `cat /run/nginx.pid` endscript } /etc/logrotate.conf: weekly rotate 4 create dateext compress notifempty nomail noolddir include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # ls -alh /var/log/nginx/ | grep access.log -rw-r--r-- 1 nginx root0 Jul 30 03:10 access.log -rw-r--r-- 1 nginx root 4.7G Jul 18 10:09 access.log-20130712 -rw-r--r-- 1 nginx root 7.6G Jul 29 09:46 access.log-20130719 -rw-r--r-- 1 nginx root 1.4G Jul 31 22:04 access.log-20130730 Т.е. запись в access.log не идет, а растет access.log-20130730. kill -USR1 `cat /run/nginx.pid` ситуацию не меняет. Что я не так? Спасибо. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru У меня (RHEL 6) в качестве postrotate-команды используется эта: /etc/init.d/nginx reload /dev/null 2/dev/null || true в скрипте /etc/init.d/nginx в функции отвечающей за reload используется killproc $nginx -HUP Попробуйте сменить -USR1 в вашей команде на -HUP? Вот так это выглядит целиком: /var/log/nginx/*log { missingok compress notifempty sharedscripts postrotate /sbin/service nginx reload /dev/null 2/dev/null || true endscript } ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru