Приложение Django на Digitalocean доживает до старости - рабочий всегда завершает работу - как определить и исправить?

Недавно я развернул небольшое приложение Django на платформе приложений Digitalocean, но по какой-то причине приложение работает очень медленно.

Это отладка сети при просмотре небольшого статического сайта (на выполнение представления уходит несколько мс в разработке), который даже не обращается к БД.

enter image description here

Вот лог с сервера Digitalocean, который в основном одинаков для всех страниц, которые я пробую - рабочий всегда завершает работу.

[cherry] [2022-08-21 09:53:58] 10.244.17.174 - - [21/Aug/2022:09:53:58 +0000] "GET /search/ HTTP/1.1" 200 5591 "https://cherry.trading/search/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
[cherry] [2022-08-21 09:54:29] [2022-08-21 09:54:29 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:169)
[cherry] [2022-08-21 09:54:29] [2022-08-21 09:54:29 +0000] [169] [INFO] Worker exiting (pid: 169)
[cherry] [2022-08-21 09:54:30] [2022-08-21 09:54:30 +0000] [177] [INFO] Booting worker with pid: 177

У меня базовая подписка с 512 Мб памяти (1 CPU)

Включено ли у вас протоколирование? Если нет, включите бэкенд логирования файлов. После этого вы сможете продолжить исследование.

Вы можете добавить это в settings.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/django/debug.log', # Do not forget to change this
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

Таким образом, если представление возвращает какие-либо ошибки, они будут зафиксированы, и вы сможете их устранить.

После некоторого перерыва я наконец нашел проблему. Промежуточное ПО Tailwind испортило все в производстве.

Вот как я теперь добавил его:

# settings.py

DEVELOPMENT_MODE = os.getenv("DEVELOPMENT_MODE", "False") == "True"

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware"
]

if DEVELOPMENT_MODE is True:
    # Tailwind hot reloader / browser reload for development environment
    MIDDLEWARE.append("django_browser_reload.middleware.BrowserReloadMiddleware")
Вернуться на верх