Postgresql Sail.js启动时有多个连接

Postgresql Sail.js启动时有多个连接,postgresql,heroku,sails.js,waterline,Postgresql,Heroku,Sails.js,Waterline,我有一个奇怪的问题——在启动我的sails应用程序(它与postgres连接并部署在heroku上)时,有多个到数据库的连接(大约10个),而且由于它是免费的帐户,如果我尝试在localhost上启动应用程序来测试一些新代码,我会遇到一个错误“角色的连接太多”。那个么,有谁知道为什么有这么多的数据库连接,我可以改变它,每个应用程序只有一个连接吗 编辑: 创建到Postgresql的连接时出错:错误:角色的连接太多 “xwoellnkvjcupt” 创建到Postgresql的连接时出错:错误:角

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

编辑: 创建到Postgresql的连接时出错:错误:角色的连接太多 “xwoellnkvjcupt” 创建到Postgresql的连接时出错:错误:角色的连接太多 “xwoellnkvjcupt” 错误:钩子无法加载:orm(错误:角色“xwoellnkv”的连接太多 jcupt) 错误:加载Sails core时遇到错误! 错误:错误:角色“xwoellnkvjcupt”的连接太多 在Connection.parseE(C:\Studia\szachman2\node\u modules\sails postgresql\node _modules\pg\lib\connection.js:561:11) 在Connection.parseMessage(C:\Studia\szachman2\node\u modules\sails postgresq l\node\u modules\pg\lib\connection.js:390:17) 在空。(C:\Studia\szachman2\node\u modules\sails-postgresql\node_ modules\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) at_stream_readable.js:401:7 在进程中。_tickDomainCallback(node.js:459:13)

这是我在本地主机上测试一些新代码时经常遇到的一个错误。

这是由于Sails的自动迁移功能,它试图保持模型和数据库的同步。它不打算用于生产。通过向模型定义中添加
migrate:safe
,可以在单个模型上关闭自动移植:

module.exports = {
    migrate: 'safe',
    attributes: {...}
}
您可以通过添加
model
config(通常在
config/locals.js
中)来关闭所有模型的自动迁移:

module.exports = {

    model: {
        migrate: 'safe'
    },
    environment: 'production',
    ...other local config...
}
@jantar@sgress454 I在
中发布了一条故障排除消息,引导postgresql
尝试改进。它是这样说的:

->可能您的
poolSize
配置设置得太高了?
例如,如果您的Postgresql数据库只支持20个并发连接,您应该确保将
poolSize
设置为<20。默认的
poolSize
为10

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

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


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 ^^
}
如果您想知道可以设置的所有信息,请查看此处:,第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'

它仍然创建了11个连接,这次是这样的查询:|选择n.nspname作为“Schema”,c.relname作为“Name”,CASE c.relkind当'r'然后'table'当'v'然后'view'当'i'然后'index'当'S'然后'sequence'当'S'然后'special'当'f'然后'foreign table'结束为“Ty pe”,pg_catalog.pg_get_userbyid(c.relowner)作为“Owner”,c2.relname作为“Table”来自pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace LEFT JOIN pg_catalog.pg_index i ON i.indexrelid=c.oid LEFT JOIN pg_Catahm,这些查询是水线注册模型的一部分。但它不应该撞坏任何东西。我在一个免费的Heroku帐户上并排运行两个应用实例,没有任何问题。你能用你得到的日志输出更新你的问题吗?它不会崩溃,只是不允许创建更多的连接,所以下一个实例不能正常启动。另一个问题是,是为每个查询创建一个数据库连接,还是为每个应用创建一个数据库连接?因为如果对于每个查询,那么我猜这个heroku免费数据库不适合我们的应用程序,因为它是一个国际象棋服务器,所以很难同时玩几个游戏。哦,下次在这里显示时,我会得到输出日志。我现在已经达到了我航海探险的相同阶段。我的服务器应该可以接受200个连接。我以前能够连接到sails postgres适配器,但现在已经达到了连接极限。我重新启动服务器,清除了所有连接,但sails postgresql不再连接到服务器:(我找不到
poolSize
选项,这里的解决方案是否适用于sails v1?我必须添加
max
键?感谢您的分享!我找不到它在哪里更改poolSize。我到处都找了。正如您指出的,它似乎是
max
)。