问题描述
我要建立一个拥有2万以上并发用户的网站.
i am going to have a website with 20k+ concurrent users.
我将通过一个管理节点和3个或更多节点使用mongodb进行数据分片.
i am going to use mongodb using one management node and 3 or more nodes for data sharding.
现在我的问题是最大连接数.如果我有那么多用户在访问数据库,我如何确保他们没有达到最大限制?我还必须更改内核上的任何内容以增加连接吗?
now my problem is maximum connections. if i have that many users accessing the database, how can i make sure they don't reach the maximum limit? also do i have to change anything maybe on the kernel to increase the connections?
基本上,数据库将用于保持连接到该站点的用户,因此将进行大量的读/写操作.
basically the database will be used to keep hold of connected users to the site, so there are going to be heavy read/write operations.
先谢谢您
推荐答案
您不想每次新用户连接时都打开新的数据库连接.我不知道您是否能够轻松扩展到超过20k的并发用户,因为MongoDB为每个新连接使用一个新线程.您希望您的Web应用程序后端仅打开一个到几个数据库连接,并仅在池中使用这些连接,尤其是因为Web使用非常异步并且是事件驱动的.
You don't want to open a new database connection each time a new user connects. I don't know if you'll be able to scale to 20k+ concurrent users easily, since MongoDB uses a new thread for each new connection. You want your web app backend to have just one to a few database connections open and just use those in a pool, particularly since web usage is very asynchronous and event driven.
请参阅: http://www.mongodb.org/display/DOCS/Connections
无论使用哪种驱动程序,都必须找出它们如何处理连接以及它们是否池化.例如,Node的猫鼬是无阻塞的,因此通常每个应用程序使用一个连接.这可能就是您想要的那种东西.
Whatever driver you're using, you'll have to find out how they handle connections and if they pool or not. For instance, Node's Mongoose is non-blocking and so you use one connection per app usually. This is the kind of thing you probably want.
这篇关于mongodb&最大连接数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!