我将MongoDB用于我的团队使用的内部ADMIN类型的应用程序。
Mongo安装在一个盒子上,没有副本集。
ADMIN应用程序每天插入70K to 100K
个文档,我们维护4个月的数据。 DB在任何给定时间都有~100 million
个文档。
部署应用程序后,几天都开始正常运行。随着数据累积达到4个月的最大限制,我发现MongoDB存在严重的性能问题。
我在Linux机器上安装了MongoDB 3.0.4
,并没有对任何优化设置进行微调。
我需要调整任何优化设置吗?
ADMIN应用程序具有调度程序,每隔1/2小时运行一次,以插入和清除过时的数据。鉴于以下集合在createdDate,env,messageId,sourceSystem上定义了索引,我看到很少有查询正在30 min
进行响应。
示例查询:具有给定env,sourceSystem但在给定日期范围内的文档计数。
ADMIN应用程序使用grails
,并使用GORM创建上述查询。它曾经在一开始就很好地工作。但在一段时间内,性能下降。我也试过重启应用程序。它没有帮助。我认为按原样使用MongoDB(如开发模式)可能会导致性能问题。关于在设置中调整什么的建议(可能是cpu / mem限制等)?
{
"_id" : ObjectId("5575e388e4b001976b5e570f"),
"createdDate" : ISODate("2015-06-07T05:00:34.040Z"),
"env" : "prod",
"messageId" : "f684b34d-a480-42a0-a7b8-69d6d18f39e5",
"payload" : "JSON or XML DATA",
"sourceSystem" : "sourceModule"
}
更新
指数:
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "admin.Message"
},
{
"v" : 1,
"key" : {
"messageId" : 1
},
"name" : "messageId_1",
"ns" : "admin.Message"
},
{
"v" : 1,
"key" : {
"createdDate" : 1
},
"name" : "createdDate_1",
"ns" : "admin.Message"
},
{
"v" : 1,
"key" : {
"sourceSystem" : 1
},
"name" : "sourceSystem_1",
"ns" : "admin.Message"
},
{
"v" : 1,
"key" : {
"env" : 1
},
"name" : "env_1",
"ns" : "admin.Message"
}
]