2017-03-17 12 views
0

私のdjangoアプリケーションには「開いているファイルが多すぎます」というメッセージが表示されます。 私はそれがロギングシステムに関係していると思います。なぜなら、すべての要求に対して、ファイルstage.logに対して新しい記述子が作成されるからです。Djangoが開いているファイルが多すぎます

ハンドラpython_logging_rabbitmq.RabbitMQHandlerは、このパッケージにpython-logging-rabbitmq

すべてのヘルプに属し?おかげさまで

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

あなたはログのその部分のスイッチをオフにしてみましたか? –

+0

はい、私はしました。ファイルハンドラを削除して正常に動作しています。しかし、一度私はそれを戻してエラーが発生します。アプリがどれだけ使用されているかによって決まります。 –

答えて

0

システムの制限を確認するには、ulimit -nを使用してください。私のマシンでは、値は65536です。

そして、より大きな値を設定することができます。

ulimit -n 70000

または:

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

ありがとう、しかし、私はこれが問題を解決するとは思わない。 cat/proc/sys/fs/file-maxは1000000を表示し、エラーが再び発生しています。 –

関連する問題