Sail.js启动时有多个连接

时间:2014-04-09 13:21:00

标签: postgresql heroku sails.js waterline

我有一个奇怪的问题 - 在启动我的风帆应用程序(连接postgres并部署在heroku上)有多个连接(大约10个)到数据库,并且由于它是免费帐户,如果我然后尝试在localhost上启动应用程序以测试一些新代码我收到错误“角色连接太多”。那么有谁知道为什么有这么多的数据库连接,我可以更改它,每个应用程序只有一个连接?

编辑: 创建与Postgresql的连接时出错:错误:角色连接太多 “xwoellnkvjcupt” 创建与Postgresql的连接时出错:错误:角色连接太多 “xwoellnkvjcupt” 错误:Hook无法加载:orm(错误:角色“xwoellnkv”的连接太多 jcupt“) 错误:加载Sails核心时遇到错误! 错误:错误:角色“xwoellnkvjcupt”的连接太多     在Connection.parseE(C:\ Studia \ szachman2 \ node_modules \ sails-postgresql \ node) _modules \ PG \ lib中\ connection.js:561:11)     在Connection.parseMessage(C:\ Studia \ szachman2 \ node_modules \ sails-postgresq) 升\ node_modules \ PG \ lib中\ connection.js:390:17)     在null。 (C:\集刊\ szachman2 \ node_modules \帆-的PostgreSQL \ node_ 模块\ PG \ lib中\ connection.js:98:18)     在CleartextStream.EventEmitter.emit(events.js:95:17)     在CleartextStream。 (_stream_readable.js:746:14)     在CleartextStream.EventEmitter.emit(events.js:92:17)     在emitReadable_(_stream_readable.js:408:10)     在_stream_readable.js:401:7     at process._tickDomainCallback(node.js:459:13)

这是我在尝试在localhost上测试一些新代码时经常遇到的错误。

3 个答案:

答案 0 :(得分:5)

@jantar @ sgress454 sails-postgresql poolSize我在poolSize中发送了一条问题排查消息,试图让它变得更好。这就是它所说的:

  

- > 也许您的poolSize配置设置得太高了?,例如如果Postgresql数据库仅支持20个并发连接,则应确保将poolSize设置为某个< 20.默认poolSize为10。

     

要覆盖默认的config/connections.js,请在相关的Postgresql“connection”配置对象上指定poolSize属性。如果您正在使用Sails,则通常位于poolSize,或者设置特定于环境的数据库配置的任何位置。

     

- > 您是否有多个Sails实例共享同一个Postgresql数据库?每个Sails实例最多可使用已配置的poolSize个连接数。假设所有Sails实例都只是彼此的副本(合理的最佳实践),我们可以通过将配置的poolSize(P)乘以Sails实例的数量来计算所使用的Postgresql连接的实际数量(C)( N)。如果实际连接数(C)超过了与Postgresql数据库(V)的 AVAILABLE 连接总数,那么就会出现问题。如果这适用于您,请尝试减少{{1}}配置。合理的{{1}}设置为V / N.

答案 1 :(得分:1)

这是由于Sails的自动迁移功能,它会尝试让您的模型和数据库同步。它不打算用于生产。您可以通过将migrate: safe添加到模型定义中来关闭单个模型上的自动迁移:

module.exports = {
    migrate: 'safe',
    attributes: {...}
}

您可以通过添加model配置来关闭所有模式的自动迁移,通常在config/locals.js

module.exports = {

    model: {
        migrate: 'safe'
    },
    environment: 'production',
    ...other local config...
}

答案 2 :(得分:0)

V1的一些更新。如果要设置连接池的最大大小,则config / datastore.js中的适配器应如下所示:

{
  adapter: 'sails-postgresql',
  url: 'yourconnectionurl',
  max: 1 // This is the important part for poolSize, I set 1 because I don't want more than 1 connection ^^
}

如果您想知道所有可以设置的信息,请看这里:https://github.com/sailshq/machinepack-postgresql/blob/176413efeab90dc5099dc60718e8b520942ce3be/machines/create-manager.js,在第162行:

// Basic:
        'host', 'port', 'database', 'user', 'password', 'ssl',

        // Advanced Client Config:
        'application_name', 'fallback_application_name',

        // General Pool Config:
        'max', 'min', 'refreshIdle', 'idleTimeoutMillis',

        // Advanced Pool Config:
        // These should only be used if you know what you are doing.
        // https://github.com/coopernurse/node-pool#documentation
        'name', 'create', 'destroy', 'reapIntervalMillis', 'returnToHead',
        'priorityRange', 'validate', 'validateAsync', 'log'