如何修复指定配置下Ignite启动时产生的多类告警问题
原问题配置
<?xml version="1.0" encoding="utf-8"?> <igniteConfiguration localhost="127.0.0.1" autoGenerateIgniteInstanceName="true" peerAssemblyLoadingMode="CurrentAppDomain" xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection"> <discoverySpi type="TcpDiscoverySpi"> <ipFinder type="TcpDiscoveryMulticastIpFinder"> <endpoints> <string>127.0.0.1:47500..47502</string> </endpoints> </ipFinder> </discoverySpi> <jvmOptions> <string>-DIGNITE_QUIET=true</string> <string>-DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true</string> </jvmOptions> <logger type="Apache.Ignite.NLog.IgniteNLogLogger, Apache.Ignite.NLog" /> </igniteConfiguration>
逐个告警修复及疑问解答
告警1:未指定Ignite工作目录
疑问解答:- 不需要为所有节点单独配置专属目录,仅需保证同一物理机上部署的多个节点的工作目录不冲突即可,跨机器节点目录可以重名。
workDirectory参数支持相对路径,会基于当前应用进程的工作目录自动解析,ASP.NET场景下默认对应站点根目录。- ASP.NET Web部署场景不需要强制设置
IGNITE_HOME环境变量,显式配置workDirectory即可消除该告警。
修复方式:在igniteConfiguration根节点添加属性workDirectory="./ignite_work"(路径可自定义)。
告警2:TcpCommunicationSpi消息队列限制设置为0
疑问解答:slowClientQueueLimit默认值为1024,若将messageQueueLimit设置为默认的1024,无需额外调整该参数,只需保证slowClientQueueLimit小于等于messageQueueLimit即可。如果后续调大messageQueueLimit,建议将slowClientQueueLimit设置为messageQueueLimit的70%-80%,避免慢客户端占用过多队列资源拖垮整个节点。
修复方式:在igniteConfiguration节点下新增CommunicationSpi配置:<communicationSpi type="TcpCommunicationSpi" messageQueueLimit="1024" slowClientQueueLimit="800"/>参数值可根据实际业务吞吐量调整。
告警3:NoopCheckpointSpi检查点功能已禁用
疑问解答:
如果Ignite仅配置为纯内存运行、未开启持久化,且没有使用需要检查点支持的计算任务场景,完全可以忽略该告警。如果需要消除告警,可在jvmOptions中添加参数-DIGNITE_CHECKPOINT_SPI_DISABLED=true,或显式配置NoopCheckpointSpi即可。告警4:H2中Java对象序列化功能已启用
该告警为提示性质,仅告知你如果在SQL查询涉及的字段中存储了未拆箱的自定义对象,序列化后的对象无法进行SQL过滤、排序、聚合等运算。如果不存在此类使用场景,可直接忽略;如需消除告警,确保所有参与SQL查询的字段都使用基本类型、字符串、日期等标准类型即可。告警5:编组器已自动设置为BinaryMarshaller
该告警为提示性质,无功能影响,只需保证集群内所有节点(包括Java/.NET的客户端、服务端)都使用默认的BinaryMarshaller即可。如果需要消除告警,可在igniteConfiguration节点下显式配置编组器:<marshaller type="Apache.Ignite.Core.Binary.BinaryMarshaller, Apache.Ignite.Core"/>
修复后完整配置
<?xml version="1.0" encoding="utf-8"?> <igniteConfiguration localhost="127.0.0.1" autoGenerateIgniteInstanceName="true" peerAssemblyLoadingMode="CurrentAppDomain" workDirectory="./ignite_work" xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection"> <discoverySpi type="TcpDiscoverySpi"> <ipFinder type="TcpDiscoveryMulticastIpFinder"> <endpoints> <string>127.0.0.1:47500..47502</string> </endpoints> </ipFinder> </discoverySpi> <communicationSpi type="TcpCommunicationSpi" messageQueueLimit="1024" slowClientQueueLimit="800"/> <marshaller type="Apache.Ignite.Core.Binary.BinaryMarshaller, Apache.Ignite.Core"/> <jvmOptions> <string>-DIGNITE_QUIET=true</string> <string>-DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true</string> <string>-DIGNITE_CHECKPOINT_SPI_DISABLED=true</string> </jvmOptions> <logger type="Apache.Ignite.NLog.IgniteNLogLogger, Apache.Ignite.NLog" /> </igniteConfiguration>
内容的提问来源于stack exchange,提问作者csharpdev

