2017-03-17 4 views
0

Ich bekomme "zu viele offene Dateien" in meiner Django-Anwendung. Ich denke, es ist mit dem Logging-System verbunden, weil mit jeder Anfrage ein neuer Deskriptor für die Datei stage.log erstellt wird.Django zu viele offene Dateien

Der Handler python_logging_rabbitmq.RabbitMQHandler gehört zu diesem Paket python-logging-rabbitmq

Jede Hilfe? Danke.

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'request_id': { 
      '()': 'log_request_id.filters.RequestIDFilter' 
     }, 
     'ip': { 
      '()': 'audit.ip_address.filters.IPAddressFilter' 
     } 
    }, 
    'formatters': { 
     'standard': { 
      'format': STANDARD_FORMAT 
     }, 
     'compact': { 
      'format': COMPACT_FORMAT 
     }, 
     'json': { 
      '()': 'pythonjsonlogger.jsonlogger.JsonFormatter', 
      'fmt': JSON_FORMAT 
     } 
    }, 
    'handlers': { 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filters': ['request_id', 'ip'], 
      'filename': BASE_DIR + '/logs/stage.log', 
      'formatter': 'standard', 
      'backupCount': LOG_FILE_BACKUP_COUNT, 
      'maxBytes': LOG_FILE_MAX_SIZE 
     }, 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'filters': ['request_id', 'ip'], 
      'formatter': 'compact' 
     }, 
     'rabbit': { 
      'level': 'DEBUG', 
      'class': 'python_logging_rabbitmq.RabbitMQHandler', 
      'formatter': 'json', 
      'host': RABBIT_HOST, 
      'username': RABBIT_USER, 
      'password': RABBIT_PWD, 
      'exchange': 'log', 
      'fields': { 
       'origin': 'main-api', 
       'env': 'stage' 
      }, 
      'fields_under_root': True 
     } 
    }, 
    'loggers': { 
     'app': { 
      'handlers': ['console', 'file', 'rabbit'], 
      'level': 'DEBUG', 
      'propagate': False, 
     }, 
     'django.request': { 
      'handlers': ['console', 'file'], 
      'level': 'DEBUG', 
      'propagate': False, 
     }, 
     'requests.packages.urllib3': { 
      'handlers': ['console', 'file'], 
      'level': 'DEBUG', 
      'propagate': True, 
     } 
    } 
} 
+0

Haben Sie versucht, dass ein Teil der Protokollierung auszuschalten? –

+0

Ja, tat ich. Ich habe den Dateihandler entfernt und arbeitet normal. aber sobald ich es zurücksetze, passiert der Fehler. Ist nicht sofort da hängt davon ab wie viel die App benutzt wird. –

Antwort

0

Verwenden ulimit -n Ihre Systemgrenze zu überprüfen. In meinem Gerät ist der Wert 65536.

Und dann können Sie einen größeren Wert festlegen.

ulimit -n 70000

Oder:

sudo echo 70000 > /proc/sys/fs/file-max 
+0

Danke, aber ich glaube nicht, dass dies das Problem löst. cat/proc/sys/fs/datei-max Zeige mir 1000000 und der Fehler tritt erneut auf. –

Verwandte Themen