ZBLOG

13.1.4. Troubleshooting This section aims to give quick solutions to overcome the most common problems arising from the use of the statistics module. 13.1.4.1. Monitoring application is not receiving any statistic data Sometimes, especially in ...

13.1.4. Troubleshooting

这一部分旨在提供快速解决方案,以克服使用统计模块时最常见的问题。

13.1.4.1. 监控应用程序未接收任何统计数据

有时,尤其是在监控具有许多 DataWriters 和 DataReaders 的大型应用程序时,监控 Fast DDS 统计信息的应用程序可能不会收到任何数据。这通常是由于统计 DataWriters 的默认配置造成的,其中 push_mode 设置为 false(即 pull_mode),历史类型设置为 KEEP_LAST,并且历史深度设置为 10。在这种配置下,可能会发生以下情况:

  1. Fast DDS 将新样本添加到其中一个统计 DataWriter。
  2. DataWriter 通知 DataReader 可用该样本。
  3. DataReader 向 DataWriter 发送请求以“拉取”这些样本。
  4. 在请求到达 DataWriter 之前,同一 DataWriter 添加了一些新的统计样本,从而导致先前的样本被覆盖。
  5. 一旦请求到达 DataWriter,由于请求的样本已被覆盖,它们不再可用,因此 DataWriter 将通知 DataReader 有更新的样本存在。
  6. 循环重新开始。

克服这种情况最简单的方法是简单地增加 DataWriter 的历史深度,以创建一些缓冲区来响应请求:

<?xml version="1.0" encoding="utf-8"?>
<dds xmlns="http://www.eprosima.com">
    <profiles>
        <participant profile_name="statistics_domainparticipant_conf_xml_general_profile">
            <rtps>
                <propertiesPolicy>
                    <properties>
                        <!-- 激活各种 Fast DDS Statistics Module 数据写入器 -->
                        <property>
                            <name>fastdds.statistics</name>
                            <value>HISTORY_LATENCY_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC</value>
                        </property>
                    </properties>
                </propertiesPolicy>
            </rtps>
        </participant>

        <!-- 所有统计数据写入器的通用配置 -->
        <data_writer profile_name="GENERIC_STATISTICS_PROFILE">
            <!-- 配置历史 QoS 为 KEEP_LAST 20 -->
            <!-- 历史深度取决于用户应用程序约束(例如发布率) -->
            <topic>
                <historyQos>
                    <kind>KEEP_LAST</kind>
                    <depth>20</depth>
                </historyQos>
            </topic>
            <!-- 启用拉取模式 -->
            <propertiesPolicy>
                <properties>
                    <property>
                        <name>fastdds.push_mode</name>
                        <value>false</value>
                    </property>
                </properties>
            </propertiesPolicy>
            <!-- 设置持久性、可靠性和发布模式 -->
            <qos>
                <durability>
                    <kind>TRANSIENT_LOCAL</kind>
                </durability>

                <reliability>
                    <kind>RELIABLE</kind>
                </reliability>

                <publishMode>
                    <kind>ASYNCHRONOUS</kind>
                </publishMode>
            </qos>
        </data_writer>
    </profiles>
</dds>

注意

增加统计 DataWriters 的历史深度会影响内存使用,因为每个 DataWriter 的历史记录将预分配足够的空间,以容纳该数量的每个主题实例的样本。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7442

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?