【发布时间】:2015-03-03 13:39:20
【问题描述】:
我有两台运行 Windows server 2012 R2 的生产服务器。作为主服务器和辅助服务器,它们用于故障转移场景,如果其中一个发生故障,另一个将承担负载。
我的应用程序正在使用 MongoDB 复制。我有 3 个实例。 Primary 和 arbiter(我将把它移到不同的服务器上,这只是一个临时的souliton)和辅助服务器上的辅助节点。
一段时间后,两台服务器上的 RAM 消耗都变得非常高。 MongoDB 会占用所有可用的 RAM,但不会释放它。我仅在 MongoDB 在副本中工作时才注意到此行为。
我做了一些研究,发现限制mongod进程本身的RAM使用是不可能的。我对使用所有 RAM 的 MongoDB 持怀疑态度。
请分享您的经验、想法或想法,如何限制我的 windows 服务器上 mongodb 进程的 RAM 使用量。
rs.status()"set": "XXXXXX",
"date": ISODate("2015-03-03T13:35:39.000Z"),
"myState": 1,
"members": [
{
"_id": 1,
"name": "Server1:3000",
"health": 1,
"state": 1,
"stateStr": "PRIMARY",
"uptime": 67557,
"optime": Timestamp(1425389739,
19),
"optimeDate": ISODate("2015-03-03T13:35:39.000Z"),
"electionTime": Timestamp(1425322202,
1),
"electionDate": ISODate("2015-03-02T18:50:02.000Z"),
"self": true
},
{
"_id": 2,
"name": "Abritrer1:3001",
"health": 1,
"state": 7,
"stateStr": "ARBITER",
"uptime": 67547,
"lastHeartbeat": ISODate("2015-03-03T13:35:38.000Z"),
"lastHeartbeatRecv": ISODate("2015-03-03T13:35:39.000Z"),
"pingMs": 0
},
{
"_id": 3,
"name": "Server2:3000",
"health": 1,
"state": 2,
"stateStr": "SECONDARY",
"uptime": 67542,
"optime": Timestamp(1425389737,
26),
"optimeDate": ISODate("2015-03-03T13:35:37.000Z"),
"lastHeartbeat": ISODate("2015-03-03T13:35:37.000Z"),
"lastHeartbeatRecv": ISODate("2015-03-03T13:35:38.000Z"),
"pingMs": 1,
"syncingTo": "Server1:3000"
}
],
"ok": 1
}
【问题讨论】:
-
您是否查看过内存的去向?你能发布
db.serverStatus()的mem子文档吗?另外,日志中是否有与性能相关的内容?记录缓慢的查询或较长的刷新时间? -
你好@wdberkeley。这是 db.serverStatus()
"mem" : { "bits" : 64, "resident" : 956, "virtual" : 91003, "supported" : true, "mapped" : 45402, "mappedWithJournal" : 90804的 mem 部分,不,我在日志中找不到任何关于性能或记录的慢查询和刷新时间的内容..
标签: mongodb