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

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам