почему nginx содержит описания файлов журналов?

на Red Hat Enterprise Linux Server версии 6.6 (Сантьяго) nginx версия: nginx / 1.0.15

Я использую общую конфигурацию logrotate nginx, logrotate работает нормально, а nginx создает новый файл журнала, например access.log или error.log

# cat /etc/logrotate.d/nginx /var/log/nginx/*log { daily rotate 4 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || : endscript } 

Однако однажды мое свободное место стало низким, и через некоторое время я обнаружил, что nginx хранит файловые дескрипторы удаленных файлов. Единственный способ освободить место на сервере – перезапустить nginx, тем самым освободив дескрипторы файлов.

Есть идеи?

 > [srv2 nginx]# logrotate -f /etc/logrotate.d/nginx > [srv2 nginx]# lsof +L1 > COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME > vmtoolsd 1125 root 3u REG 253,3 4240 0 45 /tmp/vmware-root-2883746505/vmware-apploader-1125.log (deleted) > nginx 38748 nginx 2w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38748 nginx 4w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38748 nginx 5w REG 253,4 0 0 220 /var/log/nginx/access.log (deleted) > nginx 38748 nginx 6w REG 253,4 41819 0 693 /var/log/nginx/localhost.access.log.1 (deleted) > nginx 38749 nginx 2w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38749 nginx 4w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38749 nginx 5w REG 253,4 0 0 220 /var/log/nginx/access.log (deleted) > nginx 38749 nginx 6w REG 253,4 41819 0 693 /var/log/nginx/localhost.access.log.1 (deleted) > nginx 38750 nginx 2w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38750 nginx 4w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38750 nginx 5w REG 253,4 0 0 220 /var/log/nginx/access.log (deleted) > nginx 38750 nginx 6w REG 253,4 41819 0 693 /var/log/nginx/localhost.access.log.1 (deleted) 

2 Solutions collect form web for “почему nginx содержит описания файлов журналов?”

Это нормально, вы, вероятно, «вращали» журнал без перезапуска, поэтому процесс (любой процесс действительно) оставил бы дескриптор открытым.

Либо используйте postrotate либо copytruncate . Это довольно популярно:

 postrotate kill -USR1 `cat /var/run/nginx.pid` &>/dev/null endscript 

сигнал USR1 сообщает nginx перезагрузить файлы журнала (таким образом, освобождая дескрипторы)

Это тот же вопрос, что и тот, который я открыл в репозитории ModSecurity. FYI, я связался с spyderlabs для профессионального оплачиваемого контракта на поддержку nginx, и я не слышал о них, так как они начали изучать поддержку nginx … Я остановил все модули mod_security в nginx на данный момент поскольку у меня есть другие ожидающие ошибки без решений прямо сейчас …

  • nginx: не удалось создать referer_hash, вы должны увеличить referer_hash_bucket_size: 64
  • Использование Incrond Inotify, но имеющих проблемы с группами пользователей / разрешениями
  • Внутренняя ошибка сервера nginx
  • Как исправить неизвестную ошибку внутреннего сервера (500) Nginx дает мне?
  • Как «слушать» записи nginx в сокет
  • Команды запуска в /etc/rc.local не будут работать
  • nginx ./configure не может найти openssl
  • Использование nginx для nagios вместо Apache
  • Назначение нескольких адресов IPv6 для одного интерфейса для веб-сервера https?
  • Ошибка загрузки Owncloud за обратный прокси
  • как создать php-fastcgi.sock для Nginx
  • Linux и Unix - лучшая ОС в мире.