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:05
  • 21932

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

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

MongoDB集群性能优化

1、软件方面 MongoDB版本选择锁粒度 Global(2.2-)DB锁(2.2+)Collection(2.4+)Document锁(2.6+)读写锁、写优先锁性能逐渐增强启发 ...
  • hanyueqi
  • hanyueqi
  • 2017-03-06 15:53:50
  • 733

MongoDB性能优化

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

mongdb性能优化收集

一、数据库最大连接数问题 当你在后台日志中,发现大量“connection refused because too many open connections: 819”信息时,一般跟你没有设置合适...
  • huwei2003
  • huwei2003
  • 2014-11-21 18:49:51
  • 1688

MongoDB 性能优化之分页查询

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

朋友圈动态性能优化

项目背景用户动态存储在mongodb中。动态按用户可见性分为三种类型 - 公开动态:所有好友可见 - 私有动态:仅自己可见 - 半公开动态:指定好友可见用户刷新朋友圈需查询出以上三种类型的动态,...
  • u010205879
  • u010205879
  • 2016-04-06 11:00:29
  • 943

开发高性能的MongoDB应用—浅谈MongoDB性能优化(转)

出处:http://www.cnblogs.com/mokafamily/p/4102829.html 性能与用户量     “如何能让软件拥有更高的性能?”,我想这是一个大部分开发者都思考过的...
  • liyanlei5858
  • liyanlei5858
  • 2017-08-03 20:00:28
  • 1090

Mongodb性能调优

摘要 1. Mongodb 适用场景简介 2. Mongodb 性能监控与分析 3. Mongodb 性能优化建议关于Mongodb的几个大事件 1.根据美国数据库知识大全官网发布的DB...
  • hexieshangwang
  • hexieshangwang
  • 2015-09-30 15:10:24
  • 410247

Mongodb 实战优化

http://snoopyxdy.blog.163.com/blog/static/6011744020157511536993/ Mongodb 实战优化   ...
  • strawbingo
  • strawbingo
  • 2016-04-19 16:33:43
  • 2331
收藏助手
不良信息举报
您举报文章:MongoDB性能优化之连接优化
举报原因:
原因补充:

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