【问题标题】:Queries on ignite leads to unresponsive ignite nodeignite 上的查询导致 ignite 节点无响应
【发布时间】:2020-12-03 12:52:50
【问题描述】:

当我们从 table 中选择 count(*) 时,整个 ignite 服务器变得对执行查询没有响应。查询执行时间也非常长,如果记录数越高,查询执行时间也会越长。

即使查询需要很长时间,整个服务器也不应该变得无响应(甚至无法 ssh),所有其他查询都会超时。 Apache 点燃 2.7.5 版

Apache Ignite 版本:2.7.5

Ignite 持久化已启用 (true)

2节点集群分区模式

RAM - 每个节点 150 GB

JVM xms 和 xmx 20G

记录数 - 1.6 亿

JVM 选项 -

/usr/java/jdk1.8.0_144/bin/java -XX:+AggressiveOpts -server -Xms20g -Xmx20g -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC -XX: +HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/etappdata/ignite/logs/PROD/etail-prod-ignite76-163/logs -XX:+ExitOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Xloggc:/etappdata/ignite/logs/PROD/etail-prod-ignite76-163/gc.log -XX:+PrintAdaptiveSizePolicy -XX:+UseTLAB -verbose:gc - XX:+ParallelRefProcEnabled -XX:+UseLargePages -XX:+AggressiveOpts -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true -Djava.net.preferIPv6Stack=false -Djava.net.preferIPv6Addresses=false -Dcom.sun .management.jmxremote -Dcom.sun.management.jmxremote.port=8996 -Dcom.sun.management.jmxremote.rmi.port=8996 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote .authenticate=false -Dcom.sun.management.jmxremote .local.only=false -Djava.rmi.server.hostname=etail-prod-ignite76-163 -XX:MaxDirectMemorySize=4g -javaagent:/tmp/apminsight-javaagent-prod/apminsight-javaagent.jar -Dfile.encoding= UTF-8 -XX:+UseG1GC -DIGNITE_QUIET=false -DIGNITE_SUCCESS_FILE=/ignite/apache-ignite-2.7.5-bin/work/ignite_success_7d9ec20d-9728-475a-aa80-4355eb8eaf02 -Dcom.sun.management.jmxremote -Dcom。 sun.management.jmxremote.port=49112 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -DIGNITE_HOME=/ignite/apache-ignite-2.7.5-bin -DIGNITE_PROG_NAME =./bin/ignite.sh -cp /ignite/apache-ignite-2.7.5-bin/libs/:/ignite/apache-ignite-2.7.5-bin/libs/ignite-indexing/:/ignite/apache -ignite-2.7.5-bin/libs/ignite-spring/:/ignite/apache-ignite-2.7.5-bin/libs/licenses/org.apache.ignite.startup.cmdline.CommandLineStartup config/config-cache。 xml

【问题讨论】:

  • 您是否在节点无响应期间观察到Long JVM pause 消息?
  • 是的,我们确实看到了
  • 这意味着在暂停期间,JVM在业务代码方面没有做任何有意义的事情。它甚至不执行 Ignite 代码。您需要打开 gc 登录以进行故障排除。它还应该包括安全点信息。类似-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Xloggc:/path/to/gc/logs/log.txt -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1

标签: ignite


【解决方案1】:

对于诸如SELECT * FROM table(不带WHERE)之类的查询,建议启用lazy mode,这样Ignite 就不会尝试一次将整个结果集存储在堆上。

您可以通过 JDBC/ODBC 驱动程序属性/连接字符串或SqlFieldsQuery 启用它。

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2018-03-02
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多