控制台的数据视图在收到大量事件后冻结。
冻结数据视图
无论收到的事件数量如何,数据视图都是稳定的
v3.5.8 及更早版本
当控制台订阅事件源时,该问题可能是由于 redux 存储被大量填充造成的。 特别是由于数据包代理更新,它会在每个事件中接收大量数据,这很容易占用内存。 我解决这个问题的想法是:
localStorage
而不是 redux 存储中。 然后我们只能引用 redux 存储中的事件数据。 这是基于假设的购买,也许localStorage
可以更好地处理大量数据。@bafonins你怎么看?
手动测试。
是的。
当控制台订阅事件源时,该问题可能是由于 redux 存储被大量填充造成的。 特别是由于数据包代理更新,它会在每个事件中接收大量数据,这很容易占用内存。
Redux store 在这里肯定是相关的,但主要的问题是渲染。 在https://github.com/TheThingsNetwork/lorawan-stack/pull/2477#discussion_r421182736之后,我删除了在事件视图中呈现的事件数量限制。
您的解决方案看起来不错,但确实localStorage
需要一些实验
因此,经过一段时间的研究后,我认为这里的解决方案是三重的:
react-window
这样的虚拟化模块来只渲染当前可见的列表元素不幸的是,这个问题仍然存在。 虽然,事件视图现在可以处理更多负载,但仍然存在一定的事件计数和频率阈值,这会导致延迟和冻结。
我将重新引入最大数量的事件作为快速补救措施,直到我们可以进一步微调。
这是在进行中吗?
这不再进行了。 我不得不结束两次尝试来改进这一点,因为无法验证这些解决方案是否有帮助。 通过#3229 虚拟化列表后,情况得到了显着改善,但是当事件视图接收到数千个事件时仍然存在故障点。 我不知何故错过了通过限制控制台中显示的事件数量来解决这个问题的 PR。 现在会这样做。
我不知何故错过了通过限制控制台中显示的事件数量来解决这个问题的 PR。 现在会这样做。
-> #3470
此外,这两条评论提供了一些关于我尝试做的事情以及我遇到的问题的见解:
https://github.com/TheThingsNetwork/lorawan-stack/pull/3329#issuecomment -712410891
https://github.com/TheThingsNetwork/lorawan-stack/pull/3330#issuecomment -712937573
希望这将有助于未来更彻底地解决该问题的尝试。
重新打开它,因为在显示具有约 50 多个终端设备的应用程序的事件时问题仍然存在(这取决于终端设备发送或接收数据的频率)。 在这个评论中已经有一些想法可以解决这个问题。
让我们使用此线程来讨论解决此问题的其他可能方法。 另请参阅https://github.com/TheThingsNetwork/lorawan-stack/pull/3329#issuecomment -712410891 和https://github.com/TheThingsNetwork/lorawan-stack/pull/3330#issuecomment -712937573
@kschiffer这里的状态是什么?
这个很棘手。 #3817 阻止了正确解决此问题。 此处描述了中间修复程序https://github.com/TheThingsNetwork/lorawan-stack/issues/2231#issuecomment -779659836。
要添加这一点,我们需要能够过滤事件类型的事件流,这是事件服务器 TheThingsIndustries/lorawan-stack#1804 将添加的内容之一。
因此,无论哪种方式,似乎都没有快速的补救措施。 我唯一能想到的初步修复是自动关闭事件流并在达到事件/秒阈值时显示解释消息。
所以这需要从当前的里程碑中删除,因为它现在不可操作,因为我们需要首先对此做出决定。