Django Performans Artışı: Oturumlar İçin Ayrı Memcached Kullanımı

Oturum yönetimi için ayrı bir Memcached örneği uygulayarak Django'nun performansını önemli ölçüde nasıl artıracağınızı ve önbellek yenilemeleri sırasında kullanıcı oturumlarının kapanmasını nasıl önleyeceğinizi öğrenin.

Django geliştiricileri olarak, özellikle oturum yönetimiyle uğraşırken sıkça performans darboğazlarıyla karşılaşırız. Veritabanı destekli oturumlar uygulamanızı önemli ölçüde yavaşlatabilir. Memcached bir çözüm sunarken, kendi zorluğunu da beraberinde getirir: sunucu yeniden başlatmaları veya önbellek yenilemeleri sırasında oturum verilerinin kaybedilmesi. Bu yazıda, biri normal Python nesneleri için, diğeri oturum verileri için ayrılmış iki ayrı Memcached örneği kullanarak bu sorunu nasıl aşacağınızı göstereceğim.

Tek Memcached Örneği ile İlgili Sorun

Hem genel önbellekleme hem de oturumlar için tek bir Memcached örneği kullanıldığında, sunucuyu yeniden başlatmak veya önbelleği temizlemek tüm kullanıcıların oturumlarının kapanmasına neden olur. Bu, kötü bir kullanıcı deneyimi yaratır ve özellikle yüksek trafikli siteler için sorun teşkil edebilir.

Çözüm: İkili Memcached Kurulumu

Oturumlar için ayrı bir Memcached örneği uygulayarak, ana önbelleği temizlerken bile kullanıcı oturumlarını koruyabiliriz. İşte nasıl kurulacağı:

  1. Proje dizininizde iki yeni dosya oluşturun:

Dosya 1: session_backend.py

Bu dosya, Django’nun contrib/sessions/backends/cache.py dosyasının değiştirilmiş bir versiyonudur:

1
2
3
4
5
from django.contrib.sessions.backends.base import SessionBase, CreateError
from yourproject.session_cache import cache

class SessionStore(SessionBase):
    # ... [kodun geri kalanı orijinal gönderideki gibi kalır]

Dosya 2: session_cache.py

Bu dosya, oturumlar için ayrı önbelleği başlatır:

1
2
3
4
5
6
from django.core.cache.backends.memcached import CacheClass
from django.conf import settings

scheme, rest = settings.SESSION_CACHE.split(':', 1)
host = rest[2:-1]
cache = CacheClass(host, {})
  1. settings.py dosyanızı güncelleyin:
1
2
SESSION_ENGINE = "yourproject.session_backend"
SESSION_CACHE = 'memcached://127.0.0.1:11200/'
  1. 11200 portunda yeni bir Memcached örneği başlatın.

Bu Yaklaşımın Faydaları

  1. Geliştirilmiş Performans: Oturumlar artık bellekte yönetiliyor, veritabanı sorgularından çok daha hızlı.
  2. Kullanıcı Oturumu Sürekliliği: Ana uygulama önbelleğini temizlerken bile kullanıcılar oturum açık kalır.
  3. Ölçeklenebilirlik: Oturum depolamasını ayırmak, önbellekleme altyapınızın daha kolay ölçeklendirilmesine olanak tanır.

Uygulama İpuçları

  • Memcached örneklerinizin, özellikle ayrı bir sunucuda çalışıyorsa, düzgün bir şekilde güvende olduğundan emin olun.
  • Taşmayı önlemek için oturum Memcached örneğinizin bellek kullanımını izleyin.
  • Uzun süre etkin olmayan oturumları yönetmek için oturum sona erme politikaları uygulamayı düşünün.

Bu ikili Memcached kurulumunu uygulayarak, Django uygulamanızın performansında ve kullanıcı deneyiminde önemli bir iyileşme fark edeceksiniz. Endişelerin ayrılması, kullanıcı oturumlarını bozmadan daha esnek önbellek yönetimine olanak tanır.

Bu çözümü uyguladınız mı veya sorularınız var mı? Bana [email protected] adresinden ulaşmaktan çekinmeyin. Django optimizasyonlarını tartışmaktan ve meslektaş geliştiricilerin uygulamalarını geliştirmelerine yardımcı olmaktan her zaman heyecan duyuyorum.

Mutlu kodlamalar ve Django uygulamalarınız her daim hızlı ve kararlı olsun!

Writing about the internet