Fiware Orion响应请求EntityToolArge的问题

Fiware Orion响应请求EntityToolArge的问题,fiware,fiware-orion,Fiware,Fiware Orion,我最近问了一个关于同时存在大量连接的问题,我得到的一个建议是我应该使用批处理操作。谢谢你,这帮了大忙 现在我有了一个奇怪的情况,我知道错误的含义和原因,但我不知道在我的情况下是如何发生的 所以我有2000个实体,我把它们分成500块(我知道我可以分成1000块,甚至更多,但现在我坚持500块) 然后我继续将它们创建为4个批处理操作,这与我以前打开2000个连接的逻辑相比有了巨大的改进。 我正在使用request-promise库进行那个些操作,它们被成功地创建了,但这里的事情变得很奇怪 即使它

我最近问了一个关于同时存在大量连接的问题,我得到的一个建议是我应该使用批处理操作。谢谢你,这帮了大忙

现在我有了一个奇怪的情况,我知道错误的含义和原因,但我不知道在我的情况下是如何发生的

所以我有2000个实体,我把它们分成500块(我知道我可以分成1000块,甚至更多,但现在我坚持500块)

然后我继续将它们创建为4个批处理操作,这与我以前打开2000个连接的逻辑相比有了巨大的改进。 我正在使用request-promise库进行那个些操作,它们被成功地创建了,但这里的事情变得很奇怪

即使它们已成功创建我的请求承诺返回此错误

{
    "name": "StatusCodeError",
    "statusCode": 413,
    "message": "413 - {\"error\":\"RequestEntityTooLarge\",\"description\":\"payload size: 1487638, max size supported: 1048576\"}",
    "error": {
        "error": "RequestEntityTooLarge",
        "description": "payload size: 1487638, max size supported: 1048576"
    },
    "options": {
        "method": "POST",
        "headers": {
            "Content-Type": "application/json",
            "Fiware-Service": "waste4think",
            "Fiware-ServicePath": "/deusto/w4t/zamudio/test"
        },
        "uri": "http://localhost:1026/v2/op/update?options=keyValues",
        "body": {
            "actionType": "UPDATE",
            "entities": [ 2000 entities ]},
        "json": true,
        "simple": true,
        "resolveWithFullResponse": false,
        "transform2xxOnly": false
    },
    "response": {
        "statusCode": 413,
        "body": {
            "error": "RequestEntityTooLarge",
            "description": "payload size: 1487638, max size supported: 1048576"
        },
        "headers": {
            "connection": "close",
            "content-length": "100",
            "content-type": "application/json",
            "fiware-correlator": "48689168-6ef7-11e8-a270-0242ac110003",
            "date": "Wed, 13 Jun 2018 10:48:18 GMT"
        },
        "request": {
            "uri": {
                "protocol": "http:",
                "slashes": true,
                "auth": null,
                "host": "localhost:1026",
                "port": "1026",
                "hostname": "localhost",
                "hash": null,
                "search": "?options=keyValues",
                "query": "options=keyValues",
                "pathname": "/v2/op/update",
                "path": "/v2/op/update?options=keyValues",
                "href": "http://localhost:1026/v2/op/update?options=keyValues"
            },
            "method": "POST",
            "headers": {
                "Content-Type": "application/json",
                "Fiware-Service": "waste4think",
                "Fiware-ServicePath": "/deusto/w4t/zamudio/test",
                "accept": "application/json",
                "content-length": 1487638
            }
        }
    }
}
我会记录我的流量

Sending: 0 500
Sending: 1 500
Sending: 2 500
Sending: 3 500
Sending: 4 134
[ undefined, undefined, undefined, undefined, undefined ]
正如你所看到的,从第一批、第二批等开始。。。这里未定义不是问题,因为批处理成功时仅返回204,并且我控制台日志体而不是代码

但在最后一批完成后,我得到了那个错误(创建了实体)

正如你所看到的,它显示了一个错误,就像我将所有实体放在一个巨大的批中一样,这是不正确的,而且即使我的实体被成功创建了,它也显示了这一点。现在我在这里遗漏了什么,为什么Orion会返回这个响应,但通常会在小批量操作中继续创建实体

任何建议都会有帮助


谢谢

我想问题正是猎户座告诉你的:

"payload size: 1487638, max size supported: 1048576"
因此,您将在
POST/v2/op/update
中发送1487638个有效负载字节,而Orion允许的最大有效负载字节数为1MB


假设500个实体(平均)占用1487638个字节,那么250个实体将占用一半,大约700000个字节。考虑到~700000字节小于1MB,这就足够了。事实上,你们上一批似乎有134个实体(这似乎是我划分块的方式导致了问题,我改变了我的逻辑,并将其从更改为。我将做一些额外的测试来确认它。感谢你们的帮助,问题已经解决,错误在我这边而不是Orion。