我在项目中使用MongoDB, 内存够大 数据文件全部放在/dev/shm中,数据文件每天零点定时重建,数据只有100万条,结构如下
`{ "_id" : ObjectId("52a1f489ba36e5035eaf218b"), "a_id" : 120000, "b_id" : 101,
"c_id" : 30101, "d_id" : "BUY", "e_id" : -1, "count" : 1,
"g_id" : "869899074f76f0b7bbbe581f600b9edd", "ip" : "8.8.8.8", "i_id" : 100026, "l_time" : 1386345609, "p_time" : 1386349399, "counts" : 1, "p" : "27430", "r_id" : 360000, "s_id" : 1 }`
查询量小的时候一切正常,响应速度还蛮快,可一旦查询量上去的话惨不忍睹,
对查询的的关键字也做了索引,是我并发太高了吗?还是有什么需要优化的地方?
从mongostat来看, 你的mongo查询和修改比较大. locked比较大(15%左右).
应该操作同一个表(pms),或者同一条记录比较频繁.
所以瓶颈应该在写锁上. 建议优化代码, 可以提高处理速度.
`"pms" : { "timeLockedMicros" : { "r" : 742008234676,
"w" : 3889626469 },//写锁执行时间:(16988400383185/1000000/60)64分钟
"timeAcquiringMicros" : { "r" : 13712412775800,
"w" : 16988400383185 } } },//等待获取写的锁时间: (16988400383185/1000000/60)283140分钟`
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。