簡體   English   中英

Django打開文件過多

[英]Django too many open files

我的django應用程序中顯示“打開的文件太多”。 我認為這與日志記錄系統有關,因為對於每個請求,都會為stage.log文件創建一個新的描述符。

處理程序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,
        }
    }
}

使用ulimit -n檢查系統限制。 在我的機器中,值為65536。

然后可以設置更大的值。

ulimit -n 70000

要么:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM