ECONNRESET与postgres并在nodejs上续集

时间:2019-01-25 13:04:21

标签: node.js postgresql sequelize.js

好吧,我们正在使用nodejs v10.13.0及其sequelize 4.42.0与我们的postgres 9.2银行进行通信,我们的服务器处于AZURE状态,它具有8GB的HAM,2个CPU和CentOS 7在银行中,我们正在使用2 schemas方法,并且实际上还会使用更多方法,我们认为这可能是一个问题,但是我们不确定。因此,有时会出现一些连接问题,有些时候queryssequelize会在日志中报告错误。

  

(节点:22240)UnhandledPromiseRejection警告:SequelizeDatabaseError:读取ECONNRESET   warning.js:18       在Query.formatError(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ sequelize \ lib \ dialects \ postgres \ query.js:363:16)       在query.catch.err(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ sequelize \ lib \ dialects \ postgres \ query.js:86:18)       在tryCatcher(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ util.js:16:23)       在Promise._settlePromiseFromHandler(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ promise.js:512:31)       在Promise._settlePromise(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ promise.js:569:18)       在Promise._settlePromise0(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ promise.js:614:10)       在Promise._settlePromises(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ promise.js:690:18)       在_drainQueueStep(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ async.js:138:12)       在_drainQueue(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ async.js:131:9)       在Async._drainQueues(c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ async.js:147:5)       在Instant.Async.drainQueues处[作为_onImmediate](c:\ Users \ ax10415 \ projetos \ aperam.mes.tubos \ node_modules \ bluebird \ js \ release \ async.js:17:14)       在runCallback(timers.js:705:18)       在tryOnImmediate(timers.js:676:5)       在processImmediate(timers.js:658:5)   (节点:22240)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。引发此错误的原因可能是抛出了一个没有catch块的异步函数,或者是拒绝了一个.catch()无法处理的承诺。 (拒绝ID:10)

我们已经尝试根据站点PGTune

对配置文件进行一些更新。
# DB Version: 9.2
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 8 GB
# CPUs num: 2
# Data Storage: ssd

max_connections = 200
shared_buffers = 2GB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 10485kB
checkpoint_segments = 32

进行这些设置时,第一个有趣的问题发生了,他抱怨kernel shmmax的研究发现PGTune本身告诉我们需要更改,然后将更改应用于{{1} }文件,添加以下行

/etc/sysctl.conf

我们还尝试将服务器的容量从4GB增加到8GB,但也没有成功。无论如何,我们不了解问题出在哪里,错误消息仍不清楚(至少对我而言)。

0 个答案:

没有答案