MongoDB连接数与连接优化
默认每个连接数占用10M内存
ulimit -a 查看stack size
MongoDB服务器内存要满足 connection overhead + data size + index size
即连接数开销+热点数据+索引
连接数太多的问题:
如果在日志中遇到类似如下的错误信息:
"too many open files"
"too many open connections"
则说明打开的连接数太多了,有两个限制mongod/mongos连接数的地方:
操作系统的ulimit限制,可以用ulimit查看open files,是否足够大。linux下默认的open files是1024,在提供服务的时候往往太小。
mongodb自身的限制
mongodb(mongod/mongos)在启动的时候,有个参数是–maxConns,用来指定最大的连接数,默认是20000,也是mongod支持的上限(硬编码,无法修改)。如果达到2万,则说明需要优化mongodb的数据/索引,或者需要扩展db以支持更大的并发数;如果是在参数限制小于2万而出现这个错误,则只需要调整参数即可。2.5.0去除2万的限制,see https://jira.mongodb.org/browse/SERVER-8943
连接数优化:
通过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://nosqldb.org/topic/50ca8a50ee680fee790001f2
MongoDB连接数与连接优化的更多相关文章
- mysql优化之连接优化(open-files-limit与table_open_cache)
MySQL打开的文件描述符限制 Can't open file: '.\test\mytable.frm' (errno: 24) OS error code : Too many open file ...
- mongoDB中的连接池(转载)
一.mongoDB中的连接池 刚上手MongoDB,在做应用时,受以前使用关系型数据库的影响,会考虑数据库连接池的问题! 关系型数据库中,我们做连接池无非就是事先建立好N个连接(connection) ...
- mysql优化之连接优化
Posted by Money Talks on 2012/02/23 | 第一篇 序章第二篇 连接优化第三篇 索引优化第四篇 查询优化第五篇 到实战中去 连接优化 连接优化主要指客户端连接数据库以及 ...
- MySQL优化二(连接优化和缓存优化)
body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...
- 百度APP移动端网络深度优化实践分享(二):网络连接优化篇
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网 ...
- mongodb集群性能优化
mongodb集群性能优化 在前面两篇文章,我们介绍了如何去搭建mongodb集群,这篇文章我们将介绍如何去优化mongodb的各项配置,以达到最优的效果. 警告 不做任何的优化,集群搭建完成之后,使 ...
- SpringBoot 整合mongoDB并自定义连接池
SpringBoot 整合mongoDB并自定义连接池 得力于SpringBoot的特性,整合mongoDB是很容易的,我们整合mongoDB的目的就是想用它给我们提供的mongoTemplate,它 ...
- 网络编程Netty IoT百万长连接优化
目录 IoT推送系统 IoT是什么 IoT推送系统的设计 心跳检测机制 简述心跳检测 心跳检测机制代码示例 百万长连接优化 连接优化代码示例 TCP连接四元组 配置优化 IoT推送系统 IoT是什么 ...
- mongodb的学习-4-使用 MongoDB shell 来连接 Mongodb 服务
执行启动操作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息. 使用 MongoDB shell 来连接 Mongodb 服务 标准 ...
随机推荐
- 单线程实现并发——协程,gevent模块
一 并发的本质 1 切换 2 保存状态 二 协程的概念 协程,又称微线程,纤程.英文名Coroutine.单线程下实现并发,用户从应用程序级别控制单线程下任务的切换,注意一定是遇到I/O才切. 协程的 ...
- jquery中object对象循环遍历的方法
一个朋友问对象如何转为数组,当我问他为啥要转得时候,他告诉我,数组可以用js循环遍历,而对象则不可以.其实呢,对象同样可以循环遍历的啊.不用转换也可以循环!说明你对js或者jquery的某些操作不是很 ...
- node--http小爬虫&事件模块
//http小爬虫 var http=require('http') var cheerio=require('cheerio') var url='http://www.imooc.com/lear ...
- mfc对话框嵌入Flash的交互(转)
原文转自 http://blog.csdn.net/yacper/article/details/5021081 研究Flash嵌入游戏中的可行性....... 渲染问题已解决 事件响应已解决 下面是 ...
- 标准C程序设计七---101
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服 ...
- 使用vue-element-admin框架开发时遇到的跨域问题
之前 使用js和jquery开发时也碰到过接口请求时的跨域问题, 但是在使用vue-element-admin开发也碰到这个问题,而且不能使用之前的方法解决,查过不少资料,找到一个很好的方法解决了这个 ...
- 微信小程序踩坑之一[wx.request]请求模式
最近在做小程序时,使用wx.request()方法请求时, 当使传输string类型时,一定要声明method请求模式为post,否则会一直报错,而不声明时默认为get, 已填坑 =,= wx.req ...
- POJ 3171 区间覆盖最小值&&线段树优化dp
Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4715 Accepted: 1590 D ...
- Codeforces 932 C.Permutation Cycle-数学 (ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined))
C. Permutation Cycle time limit per test 2 seconds memory limit per test 256 megabytes input stand ...