在短时间内打开大量连接时的ECONNRESET

我遇到要在Orion上创建大量实体的情况。我正在此docker-compose中使用Orion和mongo的docker版本。

version: "3"

services:

mongo:

image: mongo:3.4

volumes:

- /data/docker-mongo/db:/data/db

- /data/docker-mongo/log/mongodb.log:/var/log/mongodb/mongod.log

command: --nojournal

orion:

image: fiware/orion

volumes:

- /data/docker-mongo/log/contextBroker.log:/tmp/contextBroker.log

links:

- mongo

ports:

- "1026:1026"

command: -dbhost mongo

现在,当我想上传2000个实体时会出现问题(为每个实体打开新的连接,我知道可以做不同的操作,但现在是要求的),我成功创建了不超过600个(或更少的永远不完整的数量)的其余实体创建错误:

"error": {

"errno": "ECONNRESET",

"code": "ECONNRESET",

"syscall": "read"

},

因此,我认为此问题与Orion中的maxConnections,reqPoolSize等设置有关。但是在docker中,我无法找到Orion配置文件,我无法知道何时键入类似contextBroker

-maxConnections 123456Orion和docker容器接受该设置的命令。

另外Orion的日志为空,当Orion在docker上运行时,我无法确定是什么导致了此问题。

所以主要问题:

  • 能否以与在VM上运行的Orion相同的方式使用在docker上运行的Orion(是否存在一些后备)
  • 以及Orion在docker中运行时如何检查此问题,因为我阅读了大量文档/问题,但没有运气(或者我错过了一些东西)。

如果您有任何建议/建议,那将会很有帮助。谢谢

{

"orion" : {

"version" : "1.13.0-next",

"uptime" : "2 d, 15 h, 46 m, 34 s",

"git_hash" : "ae72acf9e8eeaacaf4eb138f7de37bfee4514c6b",

"compile_time" : "Fri May 4 10:12:18 UTC 2018",

"compiled_by" : "root",

"compiled_in" : "1901fd6bb51a",

"release_date" : "Fri May 4 10:12:18 UTC 2018",

"doc" : "https://fiware-orion.readthedocs.org/en/master/"

}

}

{ Error: socket hang up

at createHangUpError (_http_client.js:313:15)

at Socket.socketOnEnd (_http_client.js:416:23)

at Socket.emit (events.js:187:15)

at endReadableNT (_stream_readable.js:1090:12)

at process._tickCallback (internal/process/next_tick.js:63:19) code: 'ECONNRESET' }

error:

{ Error: connect ECONNREFUSED ipofvirtualm:1026

at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1174:14)

errno: 'ECONNREFUSED',

code: 'ECONNREFUSED',

syscall: 'read',

address: 'ipofvm',

port: 1026 },

options:

{ method: 'POST',

uri: 'http://ip:1026/v2/entities?options=keyValues',

headers:

{ 'Fiware-Service': 'some service',

'Fiware-ServicePath': 'some servicepath' },

body:

{ id: 'F0B935',

type: 'Transaction',

refEmitter: 'F0B935',

refReceiver: '7501JXG',

refCapturer: 'testtdata',

date: '12/12/2017 13:25',

refTransferredResources: 'testtdata',

transferredLoad: 92 },

json: true,

callback: [Function: RP$callback],

transform: undefined,

simple: true,

resolveWithFullResponse: false,

transform2xxOnly: false },

我正在使用请求承诺库进行呼叫,我尝试其他人也遇到了同样的问题。现在,由于我无法向您发送所有2000条回复,因此我将尝试描述一下。因此,当我开始发送此消息时,它就会表现出来。它先创建30个实体,然后再返回几个或更多个返回响应,提示ECONNRESET,然后再次创建,依此类推。

令我感到困惑的是,它并没有完全失败,这意味着它可以正常工作,但并没有达到预期的目的。同样,猎户座似乎关闭了插座或挂了一段时间,然后又重新打开并正常创建,依此类推。如果您需要更多信息,请询问,并感谢您的快速解答。

回答:

而不是为每个实体打开新的连接,为什么不使用

POST /v2/op/update

并在一批中创建所有实体?或几批

请参阅以下代码

https://github.com/Fiware/dataModels/blob/master/Weather/WeatherObserved/harvest/spain_weather_observed_harvest.py#L235

以上是 在短时间内打开大量连接时的ECONNRESET 的全部内容, 来源链接: utcz.com/qa/406986.html

回到顶部