[devel] План роста packages.altlinux.org (was: Re: sisyphus.ru)
Igor Zubkov
igor.zubkov на gmail.com
Вт Фев 12 19:10:16 MSK 2013
2013/2/12 Dmitry V. Levin:
> On Tue, Feb 12, 2013 at 03:43:56PM +0200, Michael Shigorin wrote:
>> On Tue, Feb 12, 2013 at 03:32:11PM +0200, Igor Zubkov wrote:
>> > Получается что access.log ротейтнулся, но не зажался. И nginx в
>> > него всё ещё пишет. Так и место когда-то закончится. Его надо
>> > рестартовать после logrotate. Баг сейчас повешу.
>>
>> А теперь подумай, что будет с логами, если отодвинуть,
>> зажать и удалить последнее имя того файла, в который
>> через уже открытый fd ещё пишет какой-нить nginx.
>
> Собственно говоря, эта фича называется delaycompress.
Что-то я не понимаю как это должно работать. По шагам:
[root at prometheus ~]# ls -la /var/log/nginx/access.log*
-rw-r--r-- 1 prometheusapp _nginx 0 ноя 22 00:38
/var/log/nginx/access.log
-rw-r--r-- 1 prometheusapp _nginx 808817073 фев 12 17:29
/var/log/nginx/access.log.1
-rw-r--r-- 1 prometheusapp _nginx 2762937 ноя 21 01:11
/var/log/nginx/access.log.2.bz2
-rw-r--r-- 1 prometheusapp _nginx 6315243 ноя 16 19:37
/var/log/nginx/access.log.3.bz2
-rw-r--r-- 1 prometheusapp _nginx 12019308 ноя 6 19:19
/var/log/nginx/access.log.4.bz2
[root at prometheus ~]#
Есть новый access.log который сейчас пустой. Есть старый access.log.1.
И есть более старый access.log.2 который от 21 ноября уже прошлого
года.
Есть:
[root at prometheus ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
exec /usr/sbin/logrotate /etc/logrotate.conf
[root at prometheus ~]# service crond status
crond is running
[root at prometheus ~]#
Т.е. есть /etc/cron.daily/logrotate и запущенный сервис crond.
[root at prometheus ~]# cat /etc/logrotate.d/nginx
/var/log/nginx/*log {
missingok
notifempty
sharedscripts
delaycompress
create 0644 root _nginx
postrotate
/sbin/service nginx rotate >/dev/null
endscript
}
[root at prometheus ~]#
Хорошо, тут есть delaycompress. И вызов service nginx rotate. В
/etc/init.d/nginx:
rotate)
msg_reloading nginx
stop_daemon --pidfile "$PIDFILE" --expect-user root
-USR1 -- nginx
Согласно документации, USR1 должен заставить сделать "Reopen the log files".
[root at prometheus ~]# cat /var/log/syslog/messages | grep cron.daily
Feb 11 00:38:01 prometheus crond[32444]: (root) CMD (run-parts /etc/cron.daily)
Feb 12 00:38:01 prometheus crond[28609]: (root) CMD (run-parts /etc/cron.daily)
[root at prometheus ~]#
Согласно логам crond, он запустил /etc/cron.daily.
[root at prometheus ~]# /etc/init.d/nginx rotate
Reloading nginx service: [ DONE ]
[root at prometheus ~]#
И ничего не происходит. Делаем в упор:
[root at prometheus ~]# kill -s USR1 `cat /var/run/nginx.pid`
[root at prometheus ~]#
Тоже не работает. На лицо баг в nginx. Повесил в upsteam:
http://trac.nginx.org/nginx/ticket/297
--
Igor Zubkov
http://hi.im/ice
Подробная информация о списке рассылки Devel