在每个请求上最好有一个从节点或连接到memcached / mongo的全局连接?

我是(重新)写一个PHP的节点,具有非常高的使用api; 它使用memcached,并且当前连接到memcached,执行它的业务,并在每次php文件运行时closures,即每次访问api页面。

现在有了节点,我们正在build立http服务器本身; 我可以定义一个全局的memcached连接并使用它:

var mclient = new memcache.Client(server, port); // This would only run after mclient has connected http.createServer(function (req,res){ // stuff involving mclient }).listen(8888); 

或者我可以把它放在createServercallback中。 同样的问题也适用于mongodb连接。 我该怎么办?

我build议使用多个连接池。 这将允许同时进行多个进行中的操作,同时节省您在创build新连接时产生的TCP握手/速率限制和应用程序级握手(如login)开销。

我不知道memcached,但我认为MongoDB的节点本地驱动程序(https://github.com/christkv/node-mongodb-native)正在使用内置的连接池,所以你没有自己实现这个。 文档中有一个说明即将推出,但看起来代码已经存在,所以应该很快。

更新:我刚刚检查与驱动程序的作者和连接池完全实施,他只是忘记从文档中删除该行。

一个连接更好,因为每次向db发出请求时都不需要通过授权和初始化。 几乎所有你想要被快速访问的东西都应该存储在RAM中,不仅包括数据库连接,还包括通常使用的模板或者其他文件,configuration或者一些队列。