Mongos连接模型探究

经常有同学会问, client/mongos/mongod之间的连接模型是怎样的关系,一个客户端连接对应多少个对后端mongod的连接。这个问题是有意义的,因为我们知道,client到mongod之间的连接,是 one-thread-per-connection的模式的,而且每个连接线程默认分配1MB内存,一千个连接就是1GB的内存; 而且活跃连接多了,内核态的线程切换引起的性能开销又是一个让人头痛的问题。one-thread-per-connection的模型相当传统(落后),该模型将线程切换/调度交给操作系统管理,带来的结果就是:延迟不可控。不过mongos接入层的引入,较好的缓解了该问题,本文主要介绍mongos和mongod之间的连接池模型,以及调优参数项。


◆◆

连接模型

◆◆

mongos作为client和mongod之间的中间层,需要管理两方面的连接

  1. client对mongos的连接

  2. mongos对mongod分片以及每个副本集的连接

mongos对client的连接模型

client对mongos的连接采用one-thread-per-connection的模式,listener线程负责accept到新的连接,每个连接新分配一个线程来处理,线程栈大小默认为1MB。

原文链接

猜你喜欢

转载自blog.csdn.net/weixin_40581617/article/details/84388076