ignite - ignite 上的查询导致 ignite 节点无响应
问题描述
当我们从 table 中选择 count(*) 时,整个 ignite 服务器对查询的执行变得无响应。查询执行时间也非常长,如果记录数越高,查询执行时间也会越长。
即使查询需要很长时间,整个服务器也不应该变得无响应(甚至无法 ssh),所有其他查询都会超时。Apache 点燃 2.7.5 版
Apache Ignite 版本:2.7.5
点燃持久性已启用 (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=假-Dcom.sun.management.jmxremote.authenticate=假-Dcom.sun.management.jmxremote.local.only=假-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=错误 -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 /点燃/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
解决方案
对于诸如SELECT * FROM table
(没有 WHERE)之类的查询,建议启用惰性模式,以便 Ignite 不会尝试一次将整个结果集存储在堆上。
您可以通过 JDBC/ODBC 驱动程序属性/连接字符串或在SqlFieldsQuery
.
推荐阅读
- python - 如何通过一个提交按钮只用一个表单文档完成三个功能?
- html - HTML表格根据条件更改文本颜色
- c# - 旋转后找到形状的左上角
- python - 我的程序一直在循环,我不知道为什么
- javascript - TypeErr:无法读取未定义的属性“角色”
- dolphindb - 根据某个债券代码查找其所有日期的数据,我应该如何设计数据库?
- javascript - 使用特定时间范围的 If/Else 条件
- reactjs - Typescript 部署问题(本地部署没有问题)
- node.js - 事件未定义nodejs
- reactjs - React Web App 中私人发布的 AWS Sumerian 场景不包括聊天机器人功能(Polly 和 Lex)