2015-08-18 64 views
2

我正在開發一個使用Kraken.js的應用程序,並管理我決定使用的會話:connect-mongo。OpenShift + HAProxy太多會話

我有這樣的設置:

'use strict'; 

var session = require('express-session'); 
var MongoStore = require('connect-mongo')(session); 

module.exports = function SessionLib(opts) { 
    return session({ 
    secret: opts.secret, 
    resave: opts.resave, 
    saveUninitialized: opts.saveUninitialized, 
    store: new MongoStore({ 
     url: opts.url, 
     ttl: opts.ttl 
    }) 
    }); 
}; 

我部署的應用程序在OpenShift與自動縮放的選項,OpenShift使用HAProxy的自動縮放,但是這是導致我的錯誤產生過多屆在我的MongoDB中(上週末約有25萬)。

有沒有保持HAProxy會話的可能性?

+0

您是否解決了問題?我遇到了同樣的問題。 – thethakuri

回答

1

一個解決辦法:

你爲什麼不上你的數據庫添加一個TTL指數爲那些會議文件?您可以添加這樣的索引,以便在TTL文檔應具有的一個字段上標記,因此每個集合中包含該字段的文檔在TTL過期後都會被刪除。

+0

實際上,我使用connect-mongo併爲每個會話設置了一個TTL索引,唯一的問題是創建了許多會話並開始在我的數據庫中佔用很多空間。 –

+0

那麼,如果你正在支持會議並且已經有TTL,那你爲什麼不把TTL縮短?嗯,也許你仍然可以準時讓你的應用程序有點無狀態?使用JWT並使用一些基於Redis的緩存? – diegoaguilar

+1

我不認爲寫MongoDB會話是最好的。 Redis或其他東西總是會更快:) – diegoaguilar