生产环境用比较新的 Java 版本,有遇到什么坑的吗?

2019-08-22 11:36:39 +08:00
 luckyrayyy

想从 8 切到 11 了,不知道有没有什么风险。

8074 次点击
所在节点    Java
34 条回复
qwerthhusn
2019-08-22 15:50:55 +08:00
tls1.3 支持的不是特别好,作为客户端如果连接到支持 tls1.3 的 http 服务时,偶现的握手失败,不过新的更新貌似已经解决了这个问题。。(因为 java11 出来的时候好像 tls1.3 还没最终发布,实现的草稿)

jdk9 开始带的那个 HttpClient 建议也别使用,继续使用第三方的 http 库,也是多线程情况下出现线程永远卡死处于 WAITING 状态(不知道跟 HTTP2 有没有关系),JDK 的 JIRA 上有不少 HttpClient 相关的 BUG,特别是跟 TLS1.3/HTTP2 相关的

其余的没发现啥问题,用的 amazon corretto
guisheng
2019-08-22 15:52:40 +08:00
11 可以自己创建项目玩,不建议直接上生产
xuanbg
2019-08-22 15:54:27 +08:00
上 11 的话,很多 8 的代码都要改。。。然后就怂了
qwerthhusn
2019-08-22 15:57:29 +08:00
HttpClient 的 BUG,使用默认的 API,没瞎设置什么参数,最后所有的线程都卡死在这里

"XNIO-1 task-3" #58 prio=5 os_prio=0 cpu=214.82ms elapsed=61392.57s tid=0x00007fabf404a800 nid=0x1a972 waiting on condition [0x00007fac577fc000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.3/Native Method)
- parking to wait for <0x000000008994e000> (a java.util.concurrent.CompletableFuture$Signaller)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.3/LockSupport.java:194)
at java.util.concurrent.CompletableFuture$Signaller.block(java.base@11.0.3/CompletableFuture.java:1796)
at java.util.concurrent.ForkJoinPool.managedBlock(java.base@11.0.3/ForkJoinPool.java:3128)
at java.util.concurrent.CompletableFuture.waitingGet(java.base@11.0.3/CompletableFuture.java:1823)
at java.util.concurrent.CompletableFuture.get(java.base@11.0.3/CompletableFuture.java:1998)
at jdk.internal.net.http.HttpClientImpl.send(java.net.http@11.0.3/HttpClientImpl.java:541)
at jdk.internal.net.http.HttpClientFacade.send(java.net.http@11.0.3/HttpClientFacade.java:119)
lzxz1234
2019-08-22 16:12:33 +08:00
8 -> 11,开发环境,尝试多次,每次坚持几个月就退回去了。。。
liujialongstar
2019-08-22 16:25:31 +08:00
还在用 7
yizmaoaa
2019-08-22 16:30:44 +08:00
我是 zulu 的 12 目前没有发现问题
yjxjn
2019-08-22 16:33:08 +08:00
@Rwing 我们前一阶段才升级到 8.哈哈哈
smilekung
2019-08-22 16:56:20 +08:00
11.0.1 httpclient 有一个 bug 会导致栈溢出 最新版已经修复 所以还是等几个版本修修 bug 吧
zzf2019
2019-08-23 09:26:23 +08:00
@echo1937 下面的人已经说完了,就是 httpclient 这个包大有问题
echo1937
2019-08-23 09:30:50 +08:00
@zzf2019 #30 那还是继续用第三方 HttpClient 吧
cco
2019-08-23 10:11:50 +08:00
openjdk8 目前很稳。
0xljh
2019-08-23 10:13:55 +08:00
用 adoptopenjdk11
Aresxue
2019-08-23 11:59:08 +08:00
生产用 8 吧,如果用户量不大而且稳定性要求不高(项目本身就是技术升级试点)可以试试 11,类型推断还不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/594140

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX