开发者社区> 问答> 正文

1.1.0的线程数为什么会一直增加?

通过jconsole监控canal1.1.0版本的线程数,走势图是一条非常标准的向上的斜线。

提问293.png

由于在linux中运行,最近两天elasticsearch总是飞掉,各种http服务也是无法访问,查看日志发现有异常,提示内存不够,不能创建线程。 但是机器是32核64G内存,完全够用。怀疑是线程数爆掉了。

查看canal日志,发现也有不能创建线程的异常。最后依次排查线程数比较多的java程序。发现canal的线程数最多。而且是程线性增长。

canal一共配置了4个实例,监控的表数如下:

实例1: 3 实例2: 265 实例3: 2900 实例4: 2900

这个版本是自己编译出来的,就改动了一行代码,并且只是加了一个try cache.(为了兼容mysql8.x,有一处需要加一个try cache) 不知道这样线性增长的线程数,是不是正常的。

PS:用的是MySQL8.x

原提问者GitHub用户liuquanal

展开
收起
Java工程师 2023-05-08 17:39:56 127 0
2 条回答
写回答
取消 提交回答
  • 已知问题,1.1.1已经接近

    原回答者GitHub用户agapple

    2023-05-09 18:40:37
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    线程数一直增加可能是因为没有正确地关闭一些资源或者线程,导致这些资源或者线程一直存在于内存中。可以尝试检查一下在程序中是否有正确地关闭资源和线程,或者是否存在资源或线程泄漏的情况。另外,也可以尝试调整canal的线程池大小,看看是否能够缓解线程数增加的问题。

    针对你的问题,可以尝试以下几个方案:

    1、检查程序是否正确地关闭了一些资源和线程,如果存在资源或线程泄漏的情况,需要及时修复。

    2、调整canal的线程池大小,可以适当减小线程池的大小,看看是否能够缓解线程数增加的问题。

    3、如果存在其他问题,可以尝试回退到较稳定的版本。

    2023-05-08 17:43:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载