FreeBSD - Apache 1.3 - newsyslog

12
[Удален]
3656

здравствуйте

устраивал ротацию логов по связке из САБЖА

пишу в newsyslog.conf

/home/satellites/http_logs/*/access_log root:wheel 644 7 * @T19 GNWJB
/home/satellites/http_logs/*/error_log root:wheel 644 7 * @T19 GNWJB
*****************
/home/site1/access_log root:wheel 644 7 * @T19 GNWJB
/home/site2/error_log root:wheel 644 7 * @T19 GWJB /var/run/httpd.pid 30

суть в том, что апач перегружается после того как все логи прокрутились. можно ли так делать? там порядка сотни виртуальных хостов, время от первого до последнего лога будет приличное. апач по любому попытается начать писать в один из логов, после того, как он прокрутился и до того, как апач перегрузится.

вопрос в том, правильно ли я делаю...?

или как было бы правильно?

если тупою, не пинайте :)

интересует связка Apache 1.3 - newsyslog

O
На сайте с 13.08.2008
Offline
26
#1
MOP1:
здравствуйте
интересует связка Apache 1.3 - newsyslog

Правильно.

Не надо путать "перегрузится", и "переоткроет логи".

Outsourcenow.ru: оттюним ваш веб-сервер. 100 млн. запросов в сутки - наш размерчик!
[Удален]
#2

поставил на сервер. ротанулось... логи вообще перестали писаться... до перезагрузки апача apachectl graceful. естественно в логах пусто :) цитировать нечего

подскажите, кто знает

Lupus
На сайте с 02.11.2002
Offline
241
#3
MOP1:
/var/run/httpd.pid 30

Если мне не изменяет склероз, вы посылаете апачу SIGUSR1, а надо бы SIGHUP.

There are two types of people in this world: 1. Those who can extrapolate from incomplete data.
[Удален]
#4
Lupus:
Если мне не изменяет склероз, вы посылаете апачу SIGUSR1, а надо бы SIGHUP.

SIGUSR1 - это для апача graceful (он перечитает конфиги, и не сбросит текущие соединения)

SIGHUP - restart (выгрузится и загрузится снова. все соединения оборвутся)

я так понял, что мне надо именно graceful (SIGUSR1 или 30)

Lupus
На сайте с 02.11.2002
Offline
241
#5
MOP1:
я так понял, что мне надо именно graceful (SIGUSR1 или 30)

Apache HOWTO documentation (/usr/local/share/doc/apache/misc/howto.html):

How to reset your log files

Sooner or later, you'll want to reset your log files (access_log and error_log) because they are too big, or full of old information you don't need.

access.log typically grows by 1Mb for each 10,000 requests.

Most people's first attempt at replacing the logfile is to just move the logfile or remove the logfile. This doesn't work.

Apache will continue writing to the logfile at the same offset as before the logfile moved. This results in a new logfile being created which is just as big as the old one, but it now contains thousands (or millions) of null characters.

The correct procedure is to move the logfile, then signal Apache to tell it to reopen the logfiles.

Apache is signaled using the SIGHUP (-1) signal. e.g.

mv access_log access_log.old
kill -1 `cat httpd.pid`

Note: httpd.pid is a file containing the process id of the Apache httpd daemon, Apache saves this in the same directory as the log files.

Many people use this method to replace (and backup) their logfiles on a nightly or weekly basis.
[Удален]
#6

я немного смущен...

http://httpd.apache.org/docs/1.3/logs.html#rotation

http://httpd.apache.org/docs/1.3/misc/howto.html#logreset

сейчас попробую второй способ...

Lupus
На сайте с 02.11.2002
Offline
241
#7

Поглядел на реакцию апача, получившего два разных пинка:

kill -HUP `cat /var/run/httpd.pid`

kill -USR1 `cat /var/run/httpd.pid`

В обоих случаях меняются PID-ы дежурных чилдренов и дескрипторы лог-файлов.

В обоих случаях пересоздаются удаленные логи.

В исходники не полез, ибо лень и пофик. :)

[Удален]
#8

Разница в запросах, обрабатываемых в момент получения сигнала. USR1 - завершить процесс по окончании обработки запроса, HUP - завершить процесс сразу, прервав обработку запросов.

Lupus
На сайте с 02.11.2002
Offline
241
#9
Interitus:
Разница в запросах, обрабатываемых в момент получения сигнала. USR1 - завершить процесс по окончании обработки запроса, HUP - завершить процесс сразу, прервав обработку запросов.

Все верно. Попробовал во время закачки большого файла. HUP сбросил соединение reset'ом, а USR1 этого не делал. Оба переоткрыли логи немедленно, по получении сигнала.

[Удален]
#10
Lupus:
Оба переоткрыли логи немедленно, по получении сигнала.

То есть как? Который большой файл качал - прямо не прерывая кач - переоткрыл лог? Так ловко по-моему только nginx умеет. Апач при USR1 должен был последнюю запись в старый файл отправить.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий