我有一个奇怪的问题 - 在启动我的风帆应用程序(连接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上测试一些新代码时经常遇到的错误。
答案 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'