THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
问题背景
发生问题前,天远系统共 发生问题前,线上系统共 128G 内存,分配 IoTDB 80G 堆内存,堆外内存无限制。
...
配置更新后,出现查询卡住的现象,使用 show query processlist 查看,显示有查询一直卡在内存里。
排查过程
首先,从 jstack 入手,查看查询卡在什么地方,为什么不继续进行。
...
MAX_CACHED_BUFFER_SIZE:每个 buffer 的最大值,在 JDK8u102 之后添加,之前甚至对单个 buffer 的大小上限没有任何限制。
bufferCache: 临时堆外内存池
这个时候问题原因已经大致清晰了。天远的机器是 这个时候问题原因已经大致清晰了。线上的机器是 80核,也就是我们整整开了 80 个查询子线程,而且天远的 个查询子线程,而且出问题的线上系统的 tsFile 文件大小非常大,最大的文件达到了 30G,单个 chunk 大小为 500M,也就是说即使我们不考虑 buffer 池子有大小这件事,仅仅缓存一个 chunk 大小的 buffer,也耗了 80 * 500M = 40G 的堆外内存!
...