最近将Druid-0.10.0升级到Druid-0.12.1的过程中遇到一些问题,为了后期方便分析问题和及时解决问题,特此写这篇文章将工作中遇到的Druid问题及解决办法记录下来,以供其他人借鉴,其中如有不妥之处,还望大家多多见谅!!

1、协调节点无法创建任务

协调节点无法创建任务基本可以从以下两个方面进行考虑:

任务信息已在数据库中存在

非堆最大内存小于实际所需内存

实时节点报错信息:

Error: com.metamx.tranquility.druid.IndexServicePermanentException: Service[druid:overlord] call failed with status: 400 Bad Request

任务报错信息:

Not enough direct memory. Please adjust -XX:MaxDirectMemorySize, druid.processing.buffer.sizeBytes, druid.processing.numThreads, or druid.processing.numMergeBuffers: maxDirectMemory[1,908,932,608], memoryNeeded[2,684,354,560] = druid.processing.buffer.sizeBytes[536,870,912] * (druid.processing.numMergeBuffers[2] + druid.processing.numThreads[2] + 1)

解决方法:

调小MaxDirectMemorySize或者修改common.runtime.config中的processing.numthreads

-server

-Xms24g

-Xmx24g

-XX:MaxDirectMemorySize=4096m

-Duser.timezone=UTC

-Dfile.encoding=UTF-8

-Djava.io.tmpdir=var/tmp

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

注意:这个问题常见于Historical和MiddleManager节点。如果出现此类问题,首先应该排查Historical和MIddleManager节点的MaxDirectMemorySize配置的值。

Historical和MiddleManager节点配置MaxDirectMemorySize必须满足下面这个公式:

MaxDirectMemorySize >= druid.processing.buffer.sizeBytes[536,870,912] * (druid.processing.numMergeBuffers[2] + druid.processing.numThreads[2] + 1)

2、数据进行GroupBy时聚合数量大从而导致报错

出现该错误主要是由以下两方面导致:

druid.processing.buffer.sizeBytes配置的缓存数据过小

druid.query.groupBy.maxOnDiskStorage默认关闭,未开启磁盘溢出功能

错误信息:

io.druid.query.QueryInterruptedException: Not enough dictionary space to execute this query. Try increasing druid.query.groupBy.maxMergingDictionarySize or enable disk spilling by setting druid.query.groupBy.maxOnDiskStorage to a positive number.

解决方法:

Broker、Historical以及实时节点更改druid.processing.buffer.sizeBytes属性值。

druid.processing.buffer.sizeBytes=536870912

Broker、Historical以及实时节点开启磁盘溢出和配置最大磁盘存储空间,具体配置如下所示:

druid.query.groupBy.maxOnDiskStorage=1

druid.query.groupBy.maxOnDiskStorage=6442450944

注意:这两种方式中可以任选其中一种,修改配置后,只需要重启相应的节点即可。

Druid创建任务时出现端口占用的情况

这种异常情况下,druid能够正常在mysql中添加task记录,但是没法在var/druid/task目录下创建segment,从而导致无法将数据保存到Druid中。从0.12.0版本开始偶尔会出现这种情况。

报错信息:

2018-07-25T05:00:14,262 WARN [main] com.sun.jersey.spi.inject.Errors - The following warnings have been detected with resource and/or provider classes:

WARNING: A HTTP GET method, public void io.druid.server.http.SegmentListerResource.getSegments(long,long,long,javax.servlet.http.HttpServletRequest) throws java.io.IOException, MUST return a non-void type.

2018-07-25T05:00:14,273 INFO [main] org.eclipse.jetty.server.handler.ContextHandler - Started o.e.j.s.ServletContextHandler@915d7c4{/,null,AVAILABLE}

2018-07-25T05:00:14,277 ERROR [main] io.druid.cli.CliPeon - Error when starting up. Failing.

java.net.BindException: Address already in use

at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_65]

at sun.nio.ch.Net.bind(Net.java:433) ~[?:1.8.0_65]

at sun.nio.ch.Net.bind(Net.java:425) ~[?:1.8.0_65]

at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[?:1.8.0_65]

at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[?:1.8.0_65]

at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:317) ~[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]

at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]

at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235) ~[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[jetty-util-9.3.19.v20170502.jar:9.3.19.v20170502]

at org.eclipse.jetty.server.Server.doStart(Server.java:401) ~[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[jetty-util-9.3.19.v20170502.jar:9.3.19.v20170502]

at io.druid.server.initialization.jetty.JettyServerModule$1.start(JettyServerModule.java:315) ~[druid-server-0.12.1.jar:0.12.1]

at io.druid.java.util.common.lifecycle.Lifecycle.start(Lifecycle.java:311) ~[java-util-0.12.1.jar:0.12.1]

at io.druid.guice.LifecycleModule$2.start(LifecycleModule.java:134) ~[druid-api-0.12.1.jar:0.12.1]

at io.druid.cli.GuiceRunnable.initLifecycle(GuiceRunnable.java:101) [druid-services-0.12.1.jar:0.12.1]

at io.druid.cli.CliPeon.run(CliPeon.java:301) [druid-services-0.12.1.jar:0.12.1]

at io.druid.cli.Main.main(Main.java:116) [druid-services-0.12.1.jar:0.12.1]

解决办法:

MiddleManager节点的配置文件runtime.properties添加如下配置:

cat druid.indexer.runner.startPort=40000

注意事项:先查看linux服务器支持的端口范围,然后根据端口范围定义任务执行起始端口

$ sysctl net.ipv4.ip_local_port_range

net.ipv4.ip_local_port_range = 3276860999

3. Segment进行compact时临时文件不存在导致报错

出现该错误主要是由于MiddleManager节点指定的临时文件不存在

MiddleManager节点配置文件jvm.properties中指定临时目录

-Djava.io.tmpdir=var/tmp

错误信息

java.lang.IllegalStateException: Failed to create directory within 10000 attempts (tried 1472453270713-0 to 1472453270713-9999)

解决办法

手动创建临时目录,比如上面的临时目录var/tmp

[work@localhost ~]$ mkdir -p var/tmp

druid mysql 时序_Druid时序数据库常见问题及处理方式相关推荐

  1. Mysql | MariDB | 导入导出数据库 | 常见问题 | ASCII ‘\0‘ appeared in the statement

    文章目录 参考 window 1.导出整个数据库 2.导出一个表 3.导出一个数据库结构 4.导入数据库 5. 导入数据到数据库 6.导入数据到数据库中得某个表 linux 一.导出数据库 二.导入数 ...

  2. mysql数据库druid密码加密_Druid数据库密码加密

    背景 数据库密码直接写在配置中,对安全来说,是一个很大的挑战.Druid为此提供一种数据库密码加密的手段ConfigFilter. druid版本为1.1.18. 加密 1.项目中引入依赖 com.a ...

  3. MySql基础篇---001 数据库概述与MySQL安装篇:概述,表和类对应关系,表关系、数据库卸载,下载,安装,配置,启动,登录,演示,图形化工具,目录结构,常见问题

    第01章_数据库概述 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储 ...

  4. java面试mysql数据库常见问题_JAVA面试常见问题之数据库篇

    1.MySQL 索引使用的注意事项 更新频繁的列不要加索引 数据量小的表不要加索引 重复数据多的字段不要加索引,比如性别字段 首先应该考虑对where 和 order by 涉及的列上建立索引 2.D ...

  5. druid 多数据源_Druid连接池的使用以及注意事项

    Druid连接池其实在网上一找一大堆文章,讲实话这里也只是作为自己记录下使用如何使用这个连接池.好的,废话不多说. 什么是Druid连接池? Druid首先是一个数据库连接池.Druid连接池是阿里巴 ...

  6. java druid mysql连接池_java使用Druid连接池连接mysql

    1.先在mysql创建需要的数据库和表 use book; create table t_user( `id`intprimary key auto_increment, `username` var ...

  7. 数据库常见问题汇总Subquery returns more than 1 row

    数据库常见问题汇总: 1.错误:Subquery returns more than 1 row 的解决办法 以MySQL为例: 1.错误:Subquery returns more than 1 r ...

  8. java程序及数据库常见问题

    java数据库常见问题 一 常见数据库语法 Mysql 1日期转换 2为null判断 oracle 1日期转换 2为null判断 PLSQL 1日期转换 2为null判断 sqlserver 1日期转 ...

  9. MySQL狂神说笔记数据库笔记详解

    1.初始MySQL javaEE:企业级java开发 Web 前端(页面:展示,数据!) 后台(连接点:连接数据库JDBC,连接前端(控制,控制视图跳转,和给前端传递数据)) 数据库(存数据,Txt, ...

  10. 机械动作时序图怎么画_快速学习时序图:时序图简介、画法及实例

    原标题:快速学习时序图:时序图简介.画法及实例 时序图作为常用的UML交互图,可以直观的传达系统内外之间的交互过程,经常用在详细设计文档中.下面本文综合参考了多篇时序图的教程,根据作者的思路将时序图做 ...

最新文章

  1. 1. CVPR2021-Papers-with-Code-Demo(CVPR2021论文下载)
  2. I-Matrix Power Series POJ - 3233 矩阵快速幂+分治
  3. load balancer 配置参考
  4. linux send 失败_linux高性能网络编程之tcp连接的内存使用
  5. 生成N个0~1的随机数,同时这些随机数的和为1
  6. 【CV】ECCV2020图像分割开源论文合集
  7. OpenCV_008-OpenCV 中的图像算术运算
  8. SAP Spartacus的url parameter
  9. 图像处理基本算法-滤波
  10. 循环内部异步函数处理相关问题解析
  11. 关于height、offsetheight、clientheight、scrollheight、innerheight、outerheight的区别
  12. Python基础8—常用模块
  13. 南京张治中故居违规重建后标价6400万元出售
  14. Hands-on Lab (6) - 配置Gogs的Webhook
  15. 从此使用linux系统,但是QQ是必不可少的!!该篇文章方法成功!!!已验证!!!!!...
  16. Go Grpc Jwt身份认证和Gateway集成以及HTTPS双向认证
  17. Vue.js 第5章 webpack配置
  18. 智能额温枪软件设计红外测温仪方案开发
  19. 国产超级英雄逆袭好莱坞
  20. java自定义lock锁

热门文章

  1. ensp配置access口_华为路由交换技术 | 虚拟局域网VLAN详解与配置
  2. 电脑教程从入门到精通_【电路仿真】视频教程资料包,proteus入门到精通+实例教程+软件,免费下载!...
  3. MYSQL连接出现Auth_连接MySQL数据库出现时Authentication plugin 'caching_sha2_password' cannot be loaded的解决办法...
  4. xtragrid 某个值 查找_XtraPivotGrid根据列(行)的汇总值对列(行)标头进行查找...
  5. mysql导出数据大概得多久_MySQL 导出数据
  6. Vue 配置请求本地Json数据
  7. 嵌入式Linux截图工具gsnap移植与分析【转】
  8. 简易图解N合1集成安装光盘制作教程二
  9. bzoj 4873: [Shoi2017]寿司餐厅 [最小割]
  10. php结合nginx,mysql