云数据库MongoDB为什么需要限制连接数?

简介:
  • 连接是要消耗资源的,而且消耗的并不少。

    • 内存:MongoDB为例,每个线程都要分配1MB的栈内存出来。1000个连接,1G内存就这么没了,甭管是否是活跃连接
    • 文件句柄:每个连接都要打开一个文件句柄,当然从成本上讲,这个消耗相对内存是小了很多。但换个角度,文件句柄也被其他模块消耗着,比如WT存储引擎,就需要消耗大量的文件句柄
  • 是否真的需要这么多的链接,一般的业务场景下请求压力在1000QPS左右,按照每个请求50ms计算,最多也就需要1000/(1000/50)==50个链接即可满足需求,并且是整个系统50个链接即可。

  • 很多人平时没有怎么注意过链接数概念,上云后发现居然有这样的限制,心里很不舒服,可能非常不理解。这里说下常见的两种情况:

    • 短链接:一般都是PHP环境,因为PHP的框架决定了PHP短链接的特性,并且链接数的需求一般是在1000-3000左右,具体多少还要根据业务部署的PHP数量来计算。并且MongoDB开源版本在短链接Auth处理上并不优雅,会消耗非常多的CPU资源,3000链接即可跑满24Core的CPU。PHP大拿Facebook也有同样的问题,所以他们用go语言自行开发了一套Proxy代理,来解决对MongoDB的短链接请求问题,但这毕竟带来部署成本和兼容性问题。阿里云的解决方案是从MongoDB源码优化下手,可以参考文章
    • 长链接:比较健康合理的使用方式,但是也要正确的配置客户端,相关的参数为&maxPoolSize=xx 在ConnectionURI上追加上去即可,否则默认每个客户端就是高处100来个,平白的浪费资源
  • 链接数的上限需要综合考虑性能,稳定性,业务需求。多方面去考虑,缺一不可。超低的内存,配置超高的链接数,得到的只能是OOM。

  • 更多的关于连接数和如何正确配置的文章请参考MongoDB云数据库常见问题诊断

目录
相关文章
|
NoSQL MongoDB 索引
MongoDB创建、查看、删除索引
MongoDB创建、查看、删除索引
351 0
|
弹性计算 开发者
阿里云99元和199元服务器配置和性能怎么样?
阿里云99元和199元的服务器配置和性能测评如下,阿里云服务器99元一年配置为云服务器ECS经济型e实例,2核2G配置、3M固定带宽和40G ESSD Entry系统盘,新用户和老用户均可买;企业用户ECS u1实例,2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,企业客户专享。活动如下:
|
监控 Cloud Native 容灾
如何保障系统稳定性并实现绿色减排?蚂蚁集团有这些关键技术
4月27日,首届“全球信息系统稳定性峰会”在北京召开。会上,蚂蚁集团数字科技事业群技术副总经理石世群做了《支付宝系统双十一稳定性保障经验分享》的主题演讲,分享蚂蚁集团金融级分布式架构SOFAStack在系统稳定性保障领域的探索和实践经验。
732 0
如何保障系统稳定性并实现绿色减排?蚂蚁集团有这些关键技术
|
安全 大数据 Linux
总结下 fs.file-max,ulimit -n 和 lsof的异同
总结下 fs.file-max,ulimit -n 和 lsof的异同
|
消息中间件 存储 分布式计算
|
Java 分布式数据库 Hbase
干货 | 如何优雅的通过Key与Value分离降低写放大难题?
LSMs(Log Structured Merge Trees)结构在现今数据存储系统中非常流行,很多著名系统,包括 Google BigTable,HBase,RocksDB,Apache Cassandra 等等都采用了这一结构。
3921 0
|
存储 Prometheus Kubernetes
Etcd几个关键的监控指标
Etcd是一个高可靠、分布式的键值存储系统,Kubernetes的设计基本都是围绕Etcd设计的,可谓成也Etcd,败也Etcd。Etcd负责Kubernetes集群的数据存储,提供了集群数据一致性保证及监测(watch)等机制,是整个集群的核心,但由于Etcd本身的性能限制,制约了Kubernetes集群的规模,当前官宣的最大节点数是5000,但目前原生Kubernetes在生产环境中基本都不超过3000个节点,所以针对Etcd的监控尤为重要。
1507 0
|
编解码
流媒体技术学习笔记之(五)码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念
码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念   高清视频主要编码   480P格式:720x480  720P格式:1280x720 【表现体育节目、快速运动的视频时,720P更明显】 1080P格式:1920x1080 【适合普通电视节目、电影等慢速运动的视频时,1080P更明显】 1、码流(码率)           码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。
8040 0
|
Unix Linux Perl
sed删除指定行
sed删除指定行
2132 1
|
缓存 索引 Python
Conda 常用命令大全
Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。

相关产品

  • 云数据库 MongoDB 版
  • 下一篇
    开通oss服务