Как избежать, чтобы апачи перезагрузили при вращении журналов?

Это может быть вызвано sshd выполнение поисков DNS, особенно при использовании ключей SSH. Можно добиться этого путем помещения записей для имени системы сервера и клиентского имени системы в /etc/hosts.

См. http://psomas.wordpress.com/2009/10/19/sshd-reverse-dns-lookup/ для немного большей глубины.

25
07.02.2018, 02:29
2 ответа

Причина, что апачу нужна перезагрузка, состоит в том, что, после того как он открыл файл, это получает дескриптор файла к нему, и это будет продолжать писать в тот дескриптор файла. При перемещении файла он не видит, что, это просто продолжает писать в тот же дескриптор. Когда Вы сделаете перезагрузку, она откроет файл снова и получит новый дескриптор.

Для предотвращения перезагрузки, вместо того, чтобы переместить файл, можно скопировать его и освободить старый файл. Тем путем апач может продолжать писать в тот же дескриптор файла. Вы делаете это путем добавления опции, "copytruncate" к logrotate файлу конфигурации, как это:

/apache/*log {
    copytruncate
    compress
    dateext
    rotate 365
    size=+300M
    olddir /log/old/apache
    notifempty
    missingok
}
42
27.01.2020, 19:40
  • 1
    Спасибо за Ваш ответ. Таким образом, я предполагаю, когда я добавляю lastaction echo "" | /apache/*log endscript дескриптор файла не "потерян"? –  harp 10.09.2012, 13:08
  • 2
    Извините, я должен был сказать "copytruncate" вместо "копии". Затем Вам не нужна lastaction вещь вообще. Я обвиняю иметь слишком много крови в своем потоке :-) –  Jenny D 10.09.2012, 13:17
  • 3
    Работы как очарование :) –  harp 10.09.2012, 13:56
  • 4
    @harp быть осторожным, logrotate в документе говорится: "Обратите внимание, что существует очень маленький интервал времени между копированием файла и усечением его, таким образом, некоторые данные регистрации могли бы быть потеряны". –  Totor 24.04.2015, 01:48

Я рекомендую Вам использовать http://cronolog.org/

Это - то, как я использую его:

CustomLog     "|/usr/local/sbin/cronolog -S /var/log/httpd/t3.CCC.eu-access_log -P /var/log/httpd/t3.CCC.eu-access_log.prev /var/log/httpd/t3.CCC.eu-%Y.log" combined
5
27.01.2020, 19:40
  • 1
    Передача по каналу к любой внешней программе может быть проблемой, если существует большой трафик к веб-серверу. Но это действительно аккуратно избегает проблемы дескриптора файла. –  Jenny D 10.09.2012, 12:48
  • 2
    , Похож на хорошую альтернативу. cronolog сжимается на лету? –  harp 10.09.2012, 13:59

Теги

Похожие вопросы