通过jconsole监控canal1.1.0版本的线程数,走势图是一条非常标准的向上的斜线。
由于在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
线程数一直增加可能是因为没有正确地关闭一些资源或者线程,导致这些资源或者线程一直存在于内存中。可以尝试检查一下在程序中是否有正确地关闭资源和线程,或者是否存在资源或线程泄漏的情况。另外,也可以尝试调整canal的线程池大小,看看是否能够缓解线程数增加的问题。
针对你的问题,可以尝试以下几个方案:
1、检查程序是否正确地关闭了一些资源和线程,如果存在资源或线程泄漏的情况,需要及时修复。
2、调整canal的线程池大小,可以适当减小线程池的大小,看看是否能够缓解线程数增加的问题。
3、如果存在其他问题,可以尝试回退到较稳定的版本。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。