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