首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在连接许多设备时,如何改进套接字挂起?

在连接许多设备时,如何改进套接字挂起?
EN

Stack Overflow用户
提问于 2018-12-17 15:36:12
回答 1查看 414关注 0票数 1
  • 在下面的环境中,我正在测试如何将许多设备连接到FIWARE。
  • 每个组件都部署在物理服务器上的容器中。 +-------------------------------------------------+ x彗星-天鹅座-猎户座- IoTAgentJSON -嵌合体-设备*N +-------------------------------------------------+
  • 在每个设备以1msg/秒的速度传输数据的情况下,当设备数为350个时,IoTAgent会发生以下错误(即350 msg/秒) {"log":"time=2018-12-16T14:57:24.810Z分部lvl=ERROR corr=ec11c37f-5194-4cb3-8d79-e04a2d1e745c trans=ec11c37f-5194-4cb3-8d79-e04a2d1e745c op=IoTAgentNGSI.NGSIService srv=n/a subsrv=n/a subsrv在上下文代理中执行更新操作:错误套接字挂起op=IoTAgentNGSI.NGSIService comp=IoTAgent\n,“流”:“stdout”,“时间”:“2018-12-16T14:57:24.81037597Z”} {"log":"time=2018-12-16T14:57:24.810Z lvl=ERROR corr=ec11c37f-5194-4cb3-8d79-e04a2d1e745c trans=ec11c37f-5194-4cb3-8d79-e04a2d1e745c op=IoTAgentNGSI.Alarms srv=n/a subsrv=n/a msg=Raising ORION-报警器:{\“code\”:\“ECONNRESET\”comp=IoTAgent\n,““时间”:“2018-12-16T14:57:24.810440213Z”{“log”} {"log":"time=2018-12-16T14:57:24.810Z lvl=ERROR corr=ec11c37f-5194-4cb3-8d79-e04a2d1e745c -反式=ec11c37f-5194-4cb3-8d79-e04a2d1e745c op=IoTAgentJSON.MQTTBinding srv=n/a subsrv=n/a subsrv=n/a msg=-002:无法将更新的值发送给上下文代理:错误:套接字挂起comp=IoTAgent\n",“stdout”时间“:”stdout“时间:1612-16T14
  • 请求的ps ax | grep contextBroker命令的结果如下所示。 ps ax grep contextBroker 19766?Ssl 29:02 /usr/bin/contextBroker -fg -multiservice -ngsiv1Autocast -dbhost mongodb-orion-demo -statCounters -statSemWait -statTiming

问题1:原因何在?IoTAgent?或者猎户座?还是MongoDB?还是内核参数?

  • Error found executing update action in Context Broker: Error: socket hang up,但是在Orion中没有显示错误日志。

问题2:如何提高FIWARE的处理性能?

  • 你需要IoTAgent的规模吗?
  • 你需要考虑猎户座的参数吗?

问题3:是否对IoT代理进行批处理操作?

  • 在下面的页面中,您应该执行一个批处理操作,而不是为每个实体打开一个新的连接,但是在IoTAgent中有这样的函数吗?
  • 在短时间内打开大量连接时
EN

回答 1

Stack Overflow用户

发布于 2018-12-21 18:09:56

很难给出正确的答案,因为性能取决于许多因素,特别是在复杂的设置中,涉及多个组件之间的交互。然而,我将尝试根据你提供的信息和我以前的经验提供一些想法和见解。

关于猎户座,我建议你去看看性能调优文档。按照该页中的指示,可以提高组件的性能。

然而,尽管如此,我并不认为Orion是造成问题的原因,因为:

  • 即使没有性能优化,Orion通常也会达到大约1,000 tps的吞吐量。它应该没有问题地处理350 tps的更新。
  • Orion没有显示错误日志。据我了解,您所拥有的错误日志是由IOTAgent组件生成的。

因此,专注于IOTA,也许使用奥塔-UL而不是IOTA-JSON更好。UL编码比JSON编码更有效,因此您可以获得更高的效率。此外,IOTA-UL允许您发送多个度量(使用#作为分隔符),我不知道它是否适合您的情况,但可以看作是一种有限的批处理更新形式(更多细节请参见UL文档 )。

如果这不起作用,另一个优点是使用它的NGSIv2 API直接将数据发送到Orion。这将具有以下几个优点:

  • 简化设置(减少两部分: MQTT代理和IOTAgent)
  • 在相同的资源条件下,Orion本机性能通常高于IOTAgents性能(正如我在前面提到的~1,000 tps或应用性能优化后的更高性能)
  • NGSIv2 API提供了一个批处理更新操作(在上面引用的NGSIv2规范文档中查找NGSIv2)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53818381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档