Sto cercando di capire perché il mio sito django (gunicorn 4 operai) è lento sotto carico, ho fatto qualche profilazione http://djangosnippets.org/snippets/186/ senza alcuna risposta chiara quindi ho iniziato alcuni test di carico da zero utilizzando ab -n 1000 -c 100 http://localhost:8888/
Django, richieste basse al secondo con gunicorn 4 lavoratori
Un semplice Httpreponse ("ciao mondo") senza middleware ==> 3600req/s
Un semplice Httpreponse ("ciao mondo"), con middleware (sessione memorizzata nella cache, l'autenticazione cache) ==> 2300req/s
Un semplice render_to_response che stampa solo un modulo (modello memorizzato nella cache) ==> 12 00req/s (tempo di risposta è stato diviso per due)
Un semplice render_to_response con 50 interrogazioni al database memcache ==> 157req/s
query Memcache dovrebbe essere molto più veloce di quello (sto usando PyLibMCCache)? Il rendering del modello è lento come questo?
Ho provato diverse tecniche di profiling senza alcun successo.
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 46936
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 400000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 46936
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
$ sysctl -p
fs.file-max = 700000
net.core.somaxconn = 5000
net.ipv4.tcp_keepalive_intvl = 30
sto usando Ubuntu 12.04 (6Go di ram, Core i5)
Qualsiasi aiuto per favore?
+1 per la ricerca che hai effettuato – Private
Dipende ... che cosa fai nelle viste? quali domande esegui? su cosa li gestisci? – ionelmc
è il tuo server memcached sullo stesso computer o su uno esterno? –