Abbiamo passato la giornata a guardare a questo. Ecco le opzioni che ho scoperto. Le richieste/secondo vengono eseguite tramite ab -n 100000 -c 1 http://127.0.0.1:9778/
sul mio computer locale.
- sessioni - veloce (438 req/sec)
- cookieSession: non richiede alcun servizio esterno, impatto minore velocità (311 req/sec) - più veloce, sessioni scadranno con il cookie (personalizzato
maxAge
)
- connect-redis: richiede Redis del server, grande impatto velocità (4 req/sec con redis2go e redisgreen) - più veloce di Mongo, sessioni saranno cancellati dopo un po '(personalizzato
ttl
)
- connect-mongo - richiede server di MongoDB, impatto grande velocità (2 req/sec con mongohq) - più lento di redis, re quaderni manuale
clear_interval
da impostare per le sessioni di pulizia
Ecco la CoffeeScript che ho usato per cookieSession:
server.use express.cookieSession({
secret: appConfig.site.salt
cookie: maxAge: 1000*60*60
})
Ecco l'CoffeeScript che uso per Redis:
RedisSessionStore ?= require('connect-redis')(express)
redisSessionStore ?= new RedisSessionStore(
host: appConfig.databaseRedis.host
port: appConfig.databaseRedis.port
db: appConfig.databaseRedis.username
pass: appConfig.databaseRedis.password
no_ready_check: true
ttl: 60*60 # hour
)
server.use express.session({
secret: appConfig.site.salt
cookie: maxAge: 1000*60*60
store: redisSessionStore
})
Qui è la mia coffeescript per mongo:
server.use express.session({
secret: appConfig.site.salt
cookie:
maxAge: 100*60*60
store: new MongoSessionStore({
db: appConfig.database.name
host: appConfig.database.host
port: appConfig.database.port
username: appConfig.database.username
password: appConfig.database.password
auto_reconnect: appConfig.database.serverOptions.auto_reconnect
clear_interval: 60*60 # hour
})
})
Ora, ovviamente, i database redis e mongo remoti saranno più lenti dei loro equivalenti locali. Non riuscivo a far funzionare gli equivalenti locali, soprattutto considerando che il tempo di installazione e manutenzione per me era molto maggiore di quello che ero disposto a investire rispetto alle alternative remote ospitate, qualcosa che ritengo sia vero anche per gli altri perché questi ospitati i servizi di database remoto esistono in primo luogo!
Per il database locale benhmarks, vedere @Mustafa's answer.
Felice che qualcuno possa aggiungere edit this answer ai benchmark del database locale.
stavo usando cookie-sessiosn ma ci sono dati sessiosn memorizzati da qualche parte o no perché quello che stava accadendo nel mio caso era che le sessioni correnti venivano mostrate solo ma non quelle precedenti ?? –