Почему таблица сессий django растет автоматически
Я разрабатываю проект django, используя nginx на продакшене. Но когда я запускаю свой сервер nginx, таблица django_session в mysql начинает расти. При каждом обновлении я вижу все больше строк в таблице. Почему это происходит? Есть ли способ остановить это?
Вот мои настройки django.
А вот мои настройки nginx conf:
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name example.com;
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias C:/Users/Administrator/Documents/mydjangoproj/media; # your Django project's media files - amend as required
}
location /static {
alias C:/Users/Administrator/Documents/mydjangoproj/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
proxy_pass http://localhost:8080;
}
}
Ладно, я наконец-то разобрался. Это не имеет никакого отношения к веб-серверу nginx. Проверка здоровья моего балансировщика нагрузки приложений AWS посылала запрос каждые 5 секунд на мой веб-сайт.
Я применил два шага:
1-) Я увеличил значение интервала до 300 секунд и значение таймаута до 120 секунд в конфигурации проверки здоровья (это их максимальные значения). Таким образом, они не делают частых запросов к серверу, что значительно увеличивает размер таблицы django_sessions.
2-) Я начал очищать истекшие сессии в таблице django_sessions. Есть несколько способов справиться с этим:
a-) В MySQL вы можете вручную запустить следующий sql:
DELETE FROM mydatabase.django_session where expire_date<now()
b-) В главном каталоге проекта Django вы можете вручную выполнить следующую команду в терминале:
python manage.py clearsessions
c-) Одну из этих команд можно поместить в сценарий оболочки и запланировать его периодическое выполнение (допустим, раз в день).
На данный момент я предпочитаю команду python (пункт 2). Когда моя пользовательская база вырастет, а проект станет больше, я смогу подумать об автоматизации этого ручного процесса (последний пункт).
