[Python] web2py: lo conoscete -> sessioni su db

Manlio Perillo manlio.perillo a gmail.com
Mar 13 Dic 2011 20:01:27 CET


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 13/12/2011 18:51, Alessandro Dentella ha scritto:
> [...]
>>> Redis è stato introdotto per affrontare il problema di rallentamenti come
>>> storage per le sessioni ma come errata diagnosi, ora non è più necessario
>>> anche perché dalle mie prove (assolutamente primitive) non si guadagna nulla
>>> di interessante rispetto al db.
>>
>> Davvero?
>> Mi aspetto che, per delle semplici sessioni (storage key-value) redis
>> sia significativamente più veloce di un database relazionale.
> 
> Lo è, ma stiamo parlando di numeri molti piccoli per le mie
> esigenze. Recuperare una sessione 'media' da pg mi prende 1.0 ms,
> recupararla da redis può prendere anche 5/6 volte meno. Se la sessione è
> grande l'unpickle prende oltre i 20 ms, quindi l'ottimizzazione non è certo
> da cercare in redis ma in una ottimizzazione di ciò che sta nella sessione.
> 

Valuta anche di testare alternative a pickle.
Ad esempio http://msgpack.org/ (che non ho mai usato, comunque).

> [...]
>>>
>>> che vantaggio mi darebbe tenerlo in redis?
>>>
>>
>> Accesso ragionevolmente efficiente ed atomico + consistenza dei dati.
>> Inoltre non hai il problema della session affinity.
> 
> io intendevo rispetto al db non rispetto alla RAM
> 

Per semplici sessioni è più semplice di un database relazionale, IMHO.
Inoltre:
http://redis.io/topics/transactions

WATCH usa un lock ottimistico, magari può essere una alternativa valida
al problema che devi risolvere (che, devo ammettere, non sono ancora
sicuro di aver capito pienamente).

> [...]
> 
> Visto che tu conosci bene nginix, ip_hash è totalmente affidabile per la
> session affinity?, abbiamo avuto alcuni comportamenti strani dopo avere
> attivato il setup con svariate istanze di tornado su 2 server che si risolvevano
> dirottando verso una seconda istanza di nginix con un solo server (e due
> tornado) non sono sicuro che fosse un problema di sessioni, ma il tarlo
> ce l'ho...
> 

Non sono sicuro di avere capito il setup dei server.

Comunque ip_hash funziona solo se hai *un solo* server Nginx che accetta
tutte le richieste e poi le rigira alle instanze di tornado.

http://wiki.nginx.org/HttpUpstreamModule#ip_hash


Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk7noQcACgkQscQJ24LbaURjOgCcDlUyTNmYMy8Vi7ire2c5k0e3
YVMAoJE0BfqHDn7ZP5EDU35Onp0StsTk
=p21v
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python