Spring 启动时长优化是否有必要

2023-08-16 09:22:28 +08:00
 linyimin520812

最近在 reddit 上推广自己的关于 Spring 启动优化小项目,之前也在 v 站推广过:

评论区有个评论者 ta 的意见是没有意义,理由如下:

一开始看到这个评论还挺难过的,毕竟辛苦做的东西,被别人说的一文不值。后面去了解了一下这个开发者说的 GraalVM ,发现确实很强大,编译出的 native 启动速度确实非常的快。

所以我也开始认真的思考这个项目是否真的有意义,这个项目的背景是公司为了降低线上故障时回滚止血时间,要求应用启动时长必须要小于指定的时间,结合一些可以显著提高 Java 启动速度方法无观测不优化的观点实现的,最大的一个优化应用是:将启动时间由原来的将近 6 分钟优化至 3 分钟。

如果没有公司的强推,那还有没有必要这样做 spring 应用启动的优化,就像评论说的直接使用 GraalVM 。个人觉得还是有必要的:

以上就是我能想到的观点,感觉这个评论者是 GraalVM 的忠实粉丝,而且认为这是在发布垃圾消息,所以选择在 v 站想和大家再讨论一下,spring 启动时长的优化是否有必要

7117 次点击
所在节点    程序员
90 条回复
aper
2023-08-16 09:23:58 +08:00
生产环境有谁真正大规模用上了 GraalVM 嘛?
jorneyr
2023-08-16 09:27:12 +08:00
将启动时间由原来的将近 6 分钟优化至 3 分钟。
jamel
2023-08-16 09:29:28 +08:00
说没有必要的 都是伸手躺平党,当你真正的面世一款不需要改任何东西,只需引入一个依赖,不会带来任何副作用的时候,那帮叼毛恨不得立马上生产。
只有生产可控了,那些声音才会消息。
现在 GraalVM 已经在快速发展了,spring native 也实现基本可用了,还是算比较成熟了。
这些技术出现了很多年了,还有什么 loom 类的。
linyimin520812
2023-08-16 09:30:03 +08:00
@aper 不知道国外用的多不多,感觉周围人都是线下体验一下,但线下体验感觉 GraalVM 确实很厉害
lifespy
2023-08-16 09:30:50 +08:00
个人觉得,项目还是有意义的,没有任何一件事能得到所有人的赞同与认可
cbdyzj
2023-08-16 09:33:37 +08:00
启动 3 分钟还是太慢了吧,感觉不太合理
miaotaizi
2023-08-16 09:36:06 +08:00
大项目, 不得滚动发布吗? 那启动时间不就没啥影响了吗?

小项目, 慢点就慢点吧.

不知我这么理解是否有误
kaedeair
2023-08-16 09:38:31 +08:00
使用蓝绿发布或者灰度发布不能解决线上问题么
yazinnnn
2023-08-16 09:39:07 +08:00
spring 就算做了再逆天的优化也没法和 graal 的 aot 比啊..........

quarkus 即使使用了一堆插件, aot 启动时间也基本不超过 50 毫秒, 比 spring 的 jit 应用启动快太多了

```

2023-08-16 09:32:00,080 INFO [io.quarkus] (main) vrp-client 1.0.0 native (powered by Quarkus 3.2.2.Final) started in 0.018s.

```
lsk569937453
2023-08-16 09:40:21 +08:00
国内很多企业都是用 jdk8 的,优化一下还是有用的。
国外也不是都用 Graalvm,那个老外明显是口嗨。

快速启动在容器自动扩容的时候很有用,毕竟高峰期来了,你先启动了就能先把压力降下来。
lifespy
2023-08-16 09:40:48 +08:00
@yazinnnn #9 quarkus 用起来怎么样?最近打算搞个新项目,一直对 quarkus 很有兴趣
bitmin
2023-08-16 09:43:48 +08:00
有意义,我很烦 Spring 启动慢。另一个项目用 Python 开发了,人生苦短
Uyuhz
2023-08-16 09:49:49 +08:00
😔我们发布在 k8s ,很多时候都是项目都起好了,但是健康检查还没有 ready 导致不能使用,或者就是容器启动很慢。六分钟确实有点长了,但我还见过把各种加载全都加在启动过程中耗时几小时的神仙项目
yazinnnn
2023-08-16 09:51:09 +08:00
@lifespy 快跑, 都是坑, quarkus 群里天天骂街😂
chendy
2023-08-16 09:52:53 +08:00
有意义,但是没必要
小项目优化空间小,大项目确认了瓶颈也不敢动
spring 现在的启动速度已经挺好了,但是架不住依赖一堆烂七八糟的东西
linyimin520812
2023-08-16 10:02:01 +08:00
@cbdyzj 依赖了一些富客户端,在启动时会拉数据到本地,这个耗时就出来了
Akitora
2023-08-16 10:02:20 +08:00
如果项目或者库反射用的多那用 GraalVM 坑还是蛮多的
linyimin520812
2023-08-16 10:04:26 +08:00
@yazinnnn #9 很好奇,应用如果引入了一些初始化耗时比较长的依赖,启动的速度还是这么快嘛?如果还是这么快,那么对应新项目使用 quarkus 或者 graal 很有必要呀
superchijinpeng
2023-08-16 10:05:11 +08:00
@aper 坐标苏州某和政府合作公司,服务于全国各个领域现场,我们的服务都是 quarkus graalvm 的
linyimin520812
2023-08-16 10:06:22 +08:00
@chendy 是的,而且只要一引入,自己无法控制,只能看着应用启动时长慢慢一点点变长

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

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

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

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

© 2021 V2EX