小编Nee*_*ski的帖子

MongoDB 2.4.8上限集合和tailable游标消耗所有内存

我们目前正在探索MongoDB中的Capped Collections和Tailable Cursors来创建一个通知排队系统.但是,在创建一个简单的LinqPad测试(下面的代码)后,我们注意到在运行时,Mongo不断分配内存,直到没有更多可用资源,即使我们没有插入任何记录.这种分配一直​​持续到使用所有系统RAM,此时Mongo只是停止响应.

由于我们是Capped Collections和Tailable Cursors的新手,我想确保在提交bug之前我们没有错过任何明显的东西.

注意:我们尝试使用以下代码打开和关闭日记,但结果相同.

  • 平台:Windows Server 2012 64位
  • MongoDB:版本2.4.8 64位
  • 司机:官方C#10gen v1.8.3.9

Linqpad脚本

var conn = new MongoClient("mongodb://the.server.url").GetServer().GetDatabase("TestDB");

if(!conn.CollectionExists("Queue")) {

    conn.CreateCollection("Queue", CollectionOptions
        .SetCapped(true)
        .SetMaxSize(100000)
        .SetMaxDocuments(100)
    );

    //Insert an empty document as without this 'cursor.IsDead' is always true
    var coll = conn.GetCollection("Queue");
    coll.Insert(
        new BsonDocument(new Dictionary<string, object> {
            { "PROCESSED", true },
        }), WriteConcern.Unacknowledged
    );
}

var coll = conn.GetCollection("Queue");
var query = coll.Find(Query.EQ("PROCESSED", false))
    .SetFlags(QueryFlags.AwaitData | QueryFlags.NoCursorTimeout | QueryFlags.TailableCursor);

var cursor = new MongoCursorEnumerator<BsonDocument>(query); …
Run Code Online (Sandbox Code Playgroud)

c# windows mongodb capped-collections

7
推荐指数
1
解决办法
1988
查看次数

标签 统计

c# ×1

capped-collections ×1

mongodb ×1

windows ×1