Назад | Перейти на главную страницу

NGINX и ротация журналов: возможно ли отсутствие записей в журнале?

В простейшей реализации ротацию логов NGINX можно реализовать следующим образом:

mv access.log access.log.0
kill -USR1 `cat master.nginx.pid`

Мой вопрос. У нас тут проблема с параллелизмом? Я имею в виду, что если NGINX записывает запись журнала между двумя действиями (1) файл был переименован и (2) он получил команду на перезагрузку, могут ли некоторые записи журнала просто потеряны?

Перед отправкой сигнала USR1 подождите 15 секунд, и вы увидите, что * access.log.0 "все еще используется. Это происходит потому, что журнал открыт для записи на основе индексного дескриптора, а не имени файла. Таким образом, это безопасно для одновременного доступа используйте эту технику: mv + USR1