繁体   English   中英

Sailsjs的连接池

[英]Connection pooling with Sailsjs

由于没有关于如何使用Sailsjs创建连接池的文档 ,因此我一直在进行搜索,发现Sails -mysql适配器中确实有任何池配置,但与测试有关:

{
    host: process.env.WATERLINE_ADAPTER_TESTS_HOST || 'localhost',
    // (...)
    database: process.env.WATERLINE_ADAPTER_TESTS_DATABASE || 'sails_mysql',
    pool: true,
    connectionLimit: 10,
    waitForConnections: true
}

因此,我尝试将pool: true包含到Sails中的connections.js文件中:

someMysqlServer: {
    adapter: 'sails-mysql',
    host: '127.0.0.1',
    user: 'root',
    password: '',
    pool: true,
    database: 'mydatabase'
},

服务器仍在运行,我从数据库中恢复数据,但是我完全不确定是否设置了连接抛出池服务。 有什么方法可以检查此功能?

谢谢。

一切都在代码中

您可以查看sails-mysql(节点模块)的代码,并且可以肯定地找到解决方案。 在sails-mysql模块中,主要js是node-modules/sails-mysql/lib/adapter.js (根据node-modules/sails-mysql/package.json node-modules/sails-mysql/lib/adapter.js node-modules/sails-mysql/package.json )。 因此,在adapter.js文件中,您可以看到..

/*--codes--*/
var _spawnConnection = require('./connections/spawn');
/*--codes--*/
defaults: {
  pool: true,
  connectionLimit: 5,
  waitForConnections: true
},
/*--codes--*/

默认情况下,设置为在connectionLimit 5中使用池。

现在转到文件node-modules/sails-mysql/lib/connections/spawn.js ,您将在其中看到此片段。

/*--codes--*/
/*--codes--*/
  if (connectionObject.connection.pool) {
    connectionObject.connection.pool.getConnection(function (err, conn) {
      afterwards(err, conn);
    });
    return;
  }

  // Use a new connection each time
  var conn = mysql.createConnection(connectionObject.config);
  conn.connect(function (err) {
    afterwards(err, conn);
  });
  return;
/*--codes--*/
/*--codes--*/

在这里,它检查适配器是否设置为使用pool,如果它是pool:true则从游泳池中产生一个连接,否则,使用一个单独的连接而不进行游泳池...

现在让您怀疑......如果您定义了适配器,则在config / connections.js中

mysqlServerMaster: {
    adapter: 'sails-mysql',
    host: 'localhost',
    user: 'root',
    password: 'root',
    pool: false,
    database: 'payments_db'
},

那么您使用的是不带池的mysql。

否则,如果您使用此设置...

mysqlServerMaster: {
    adapter: 'sails-mysql',
    host: 'localhost',
    user: 'root',
    password: 'root',
    pool: true,
    connectionLimit: 10,
    database: 'payments_db'
},

那么您肯定有一个具有connectioLimit === 10的mysql连接池。 我希望你现在知道了。 https://www.npmjs.com/package/sails-mysql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM