MongoDB性能优化之连接优化

转载 2011年09月14日 21:45:24

本文是BoxedIce公司遇到的一个真实案例,如果你正在使用MongoDB的话,此文又是一个实用教材。

BoxedIce在plugin directory项目中添加了新的WEB机器结点后,发现其MongoDB集群的性能开始受到影响,表现在请求的高峰时期,MongoDB的响应时间变得非常长。

通过监控发现,在其高峰时间MongoDB的连接数达到了1100~1500左右,由于每个连接需要使用10M(stack size默认为10240)的内存,这导致相当大的内存开销。

BoxedIce的处理方法是,首先通过优化连接池,将连接数控制在了800个左右,然后通过修改内核的stack size值,从默认的10M修改到1M,使连接占用的内存大大减少。


MongoDB连接数过多的话,会拖累性能,可以通过serverStatus查询连接数:

mongo> db.serverStatus().connections

每个连接都是一个线程,需要一个Stack,Linux下缺省的Stack设置一般比较大:

shell> ulimit -a | grep stack
stack size              (kbytes, -s) 10240

至于MongoDB实际使用的Stack大小,可以用如下命令确认(单位:K):

shell> cat /proc/$(pidof mongod)/limits | grep stack | awk -F 'size' '{print int($NF)/1024}'

如果Stack过大(比如:10240K)的话没有意义,简单对照命令结果中的Size和Rss:

shell> cat /proc/$(pidof mongod)/smaps | grep 10240 -A 10

所有连接消耗的内存加起来会相当惊人,推荐把Stack设置小一点,比如说1024:

shell> ulimit -s 1024

注:从MongoDB1.8.3开始,MongoDB会在启动时自动设置Stack。


参考

http://blog.nosqlfan.com/html/1838.html

http://huoding.com/2011/08/19/107

http://blog.boxedice.com/2011/06/08/mongodb-connection-overhead/

Mongodb性能调优 -性能优化建议

摘要 1. MongoDB 适用场景简介 2. Mongodb 性能监控与分析 3. Mongodb 性能优化建议 关于Mongodb的几个大事件 1.根据美国数据库知识大全官网...
  • u011447828
  • u011447828
  • 2016年12月19日 12:00
  • 17262

MongoDB 性能优化:分析执行计划

前言cursor.explain("executionStats") 和 db.collection.explain("executionStats") 方法提供一个 查询的性能统计情况。这些数据输出...
  • defonds
  • defonds
  • 2016年05月11日 20:20
  • 7990

浅谈Mongodb性能优化

项目中使用到了mongdb,在小数据量时,和关系型数据库一样,看不出任何问题。当数据的操作变的频繁,如对10万级的数据表连续进行查询操作,mongdb会变的非常缓慢。 到底是什么原因呢? ...
  • XuekunLu
  • XuekunLu
  • 2016年04月25日 16:15
  • 2054

MongoDB性能优化之连接优化

本文是BoxedIce公司遇到的一个真实案例,如果你正在使用MongoDB的话,此文又是一个实用教材。 BoxedIce在plugin directory项目中添加了新的WEB机器结点后,发现其...
  • csummm4
  • csummm4
  • 2014年04月14日 19:09
  • 351

MongoDB性能优化

  • 2012年10月19日 14:26
  • 139KB
  • 下载

MongoDB数据库性能优化

  • 2015年01月25日 13:26
  • 11.75MB
  • 下载

MongoDB分片实战(三):性能和优化

随笔 - 97  文章 - 9  评论 - 337 MongoDB分片实战(三):性能和优化 插入、查询和更新 插入:MongoDB会根据片键和c...
  • linuxheik
  • linuxheik
  • 2016年08月29日 17:19
  • 491

MongoDB 性能优化之分页查询

最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,只能力不从心。通过如下思路改善,可以大大提高查询速度:条件查询+排序+限制返回记录。边查...
  • tianwei7518
  • tianwei7518
  • 2015年03月19日 21:39
  • 8613

MongoDB分片实战(三):性能和优化 插入、查询和更新

插入、查询和更新 插入:MongoDB会根据片键和conifg中的信息写入到指定的分片上。 读取:以下内容摘抄自《深入学习MongoDB》 关于读取:上一节故障恢复中已经有所验证。 更新:...
  • wackycrazy
  • wackycrazy
  • 2015年07月10日 17:54
  • 1226

mongodb 性能优化

在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是Mongo Database Profiler.不仅有,而且还有一些比MySQL的...
  • ferder
  • ferder
  • 2011年07月29日 11:10
  • 4278
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MongoDB性能优化之连接优化
举报原因:
原因补充:

(最多只允许输入30个字)