gpt4 book ai didi

docker - 在小时间段内打开大量连接时的ECONNRESET

转载 作者:行者123 更新时间:2023-12-02 20:04:54 32 4
gpt4 key购买 nike

我有想在猎户座上创建大量实体的情况。我正在使用 docker 版本的 Orion 和 mongo 和这个 docker-compose。

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 123456 这样的命令时,Orion 和 docker 容器正在接受该设置。

Orion 的日志也是空的,当 Orion 在 docker 上运行时,我无法确定导致此问题的原因。

所以主要问题:
  • 运行在 docker 上的 Orion 能否以与运行在 VM 上的 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 },

    我正在使用请求 promise 库来调用电话,我尝试了其他有同样问题的人。现在,由于我无法向您发送所有 2000 条回复,我将尝试描述。所以当我开始发送它时它会表现出来。它创建了大约 30 个实体,然后接下来的几个或更多返回响应说 ECONNRESET 然后它开始再次创建,依此类推。

    让我感到困惑的是,它并没有完全失败,这意味着它可以工作,但没有达到预期的效果。此外,Orion 似乎关闭了套接字或将其挂断了一段时间,然后他再次打开并正常创建,依此类推。如果您需要更多信息,请询问,并感谢您的快速回答。

    最佳答案

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

    POST /v2/op/update 

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

    见一些代码

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

    关于docker - 在小时间段内打开大量连接时的ECONNRESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50553119/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com