我正在使用带有连接中间件的Node’s Express。Connect的内存会话存储不适合生产:
Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and obviously only work within a single process.
Warning: connection.session() MemoryStore is not designed for a
production environment, as it will leak memory, and obviously only work within a single process.
对于较大的部署,mongo或redis是有意义的。
但是,生产中的单主机应用程序有什么好的解决方案?
花了一天的时间对此进行调查。这是我发现的选项。每秒请求数是ab -n 100000 -c 1 http://127.0.0.1:9778/在我的本地计算机上执行的。
ab -n 100000 -c 1 http://127.0.0.1:9778/
maxAge
ttl
clear_interval
这是我用于cookieSession的coffeescript:
server.use express.cookieSession({ secret: appConfig.site.salt cookie: maxAge: 1000*60*60 })
这是我用于redis的coffeescript:
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 })
这是我给蒙哥写的咖啡稿:
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 }) })
当然,现在,远程redis和mongo数据库将比其本地等效数据库慢。 我只是无法让当地的同类设备正常工作,特别是考虑到与托管远程替代产品相比,我的安装和维护时间远远超过了我愿意投资的时间,我对其他人也是如此,因此为什么这些托管远程替代产品也是如此数据库服务首先存在!