我将要建立一个拥有20k+并发用户的网站。
我将使用MongoDB,使用一个管理节点和3个或更多数据分片节点。
现在我的问题是最大连接数。如果有那么多用户访问数据库,如何确保他们不达到最大限制?另外,我是否需要更改内核以增加连接?
基本上,数据库将用于保存与网站连接的用户,因此将进行大量的读/写操作。
提前谢谢。
我将要建立一个拥有20k+并发用户的网站。
我将使用MongoDB,使用一个管理节点和3个或更多数据分片节点。
现在我的问题是最大连接数。如果有那么多用户访问数据库,如何确保他们不达到最大限制?另外,我是否需要更改内核以增加连接?
基本上,数据库将用于保存与网站连接的用户,因此将进行大量的读/写操作。
提前谢谢。
你不希望每次新用户连接时都打开一个新的数据库连接。因为MongoDB为每个新连接使用一个新线程,所以我不知道你是否能轻松扩展到20k+并发用户。你希望你的Web应用程序后端只有一个或几个数据库连接打开,并在池中使用这些连接,特别是因为Web使用非常异步和事件驱动。
参见:http://www.mongodb.org/display/DOCS/Connections
服务器将为每个TCP连接使用一个线程,因此强烈建议您的应用程序使用某种连接池。幸运的是,大多数驱动程序会在幕后为您处理此操作。一个值得注意的例外是您的应用程序为每个请求生成一个新进程的设置,例如CGI和一些PHP配置。
无论使用哪个驱动程序,您都需要找出它们如何处理连接以及是否进行连接池化。例如,Node的Mongoose是非阻塞的,因此通常使用一个连接。这可能是你想要的类型。