[xuxueli/xxl-job]在spring boot中jetty版本导致OOM

2024-05-15 948 views
2

xxl-job在parent中定义了jetty的版本,在xxl-job-core中引用,实际在spring boot项目打包的时候是无法使用到你定义的9.2.26.v20180806的,结果就是用的spring-boot-dependency.pom定义的jetty.version的版本即9.4.12.v20180830,但是这个版本有个bug就是jetty调用产生的线程是不回收的,久而久之就导致了OOM,作者可以在xxl-job-core中定义版本,不然麻烦的就要使用者自己去覆盖版本了。这里是说明(https://github.com/eclipse/jetty.project/issues/2860), 且jetty作者只在9.3.25.v20180904版本修复了这个问题,9.4.12以后的版本仍然存在OOM的问题

回答

5

可以试试在引入xxl-job-core时,排除jetty相关的包 再引入自己需要的版本 dependency里使用exclusions

5

可以自己做,但是如何核心包控制是最好的

0

我也被坑了,9.4.11.v20180605</jetty.version> ,spring boot 2.0.4.RELEASE版本中,启动起来过了30秒左右,直接stopServer了。加断点看了下,直接自己进final里面的stop,也没有任何异常,很诡异。换了9.2.26.v20180806,就好了。强烈建议别用jetty这种每个版本都不一样的作为默认,改用netty这种版本稳定的作为默认。

2

对于spring boot,或者部署tomcat的这种类型的项目直接使用容器自带的http协议就好了,不用再单独启动jetty-server了。

5

保持jetty版本于core依赖一致即可。

在最新的迭代版本即将替换Jetty为Netty服务,将会跟随下个版本一同发布,可以参考下。