jvm 性能调优--问题请教

2020-01-12 13:40:02 +08:00
 chunrong918

除了设置新生代,老年代比例大小,选择 gc 收集器,

还可以进行哪些方面的调优

3212 次点击
所在节点    程序员
14 条回复
ericgui
2020-01-12 13:58:38 +08:00
sagaxu
2020-01-12 13:59:29 +08:00
如果有固定的调优参数,jvm 早做成默认参数了
coolmenu
2020-01-12 14:25:38 +08:00
Oracle 估计快出一版基于 ai 的调教了
zartouch
2020-01-12 15:39:39 +08:00
建议去翻 gc 参数,不同的 gc 收集器是不一样的。比如 cms 之前我们还会设置,objects 占比多少的时候启动 cms,启用多少线程数,full gc 时强制预处理( CMSMaxAbortablePrecleanTime 默认 5s )。其他的还有晋升老年代的阈值等
wysnylc
2020-01-12 16:15:45 +08:00
建议开始了解 zgc,已经取消新生代老年代永久代,就剩下个元空间
chendy
2020-01-12 16:52:15 +08:00
HiShan
2020-01-12 17:17:23 +08:00
具体场景是啥?每个场景适用不同的 gc 就行了,一般都不用调
anyele
2020-01-12 18:28:21 +08:00
搭车问,有 zgc 后,还需要 jvm 调优吗
lewis89
2020-01-12 19:24:22 +08:00
其实说实话 JVM 真的没啥好调优的,除了在 吞吐量 内存占用 延时上 做个取舍,选个 GC 算法,其余真的没啥好调的,默认就够了,像 CMS 新生代采用 标记复制算法,已经给你配好比例了 你自己去优化完全就是 自取其辱。
cubecube
2020-01-12 22:24:59 +08:00
@lewis89 也不完全对。jvm 丰富的 gc 参数灵活性还是很棒的,不同的场景下不同的适用参数,在内存受限或者进程常驻的情况下还挺重要的。另外 cms 部分参数乱调整的话,还不如不调整, 容易适得其反,导致频繁 full gc
cubecube
2020-01-12 22:25:33 +08:00
cms 在 jdk14 貌似都要被删除了,新项目最好直接 g1
lewis89
2020-01-13 07:24:28 +08:00
@cubecube #10 就微服务架构这块,我觉得没啥好调优的,一个服务实例撑死就给几个 G 的内存,在 GC 回收参数上调优基本上没有太大意义,单个服务实例如果出现问题,通过链路监测降低它的负载,或者直接让它下线,让其它实例顶上,反正实例都是无状态的,问题不大。
lewis89
2020-01-13 07:26:50 +08:00
@cubecube #10 主要现在已经不是单体时代了,网上有很多段子,说公司老的服务 老是 OOM 重启,但是又排查不了原因,leader 为了大家晚上睡个好觉,后来干脆搞了十几个实例副本,自动负载均衡,如果哪个服务挂壁了 让它直接 down 掉重启,让备用实例顶上。
Aresxue
2020-01-13 09:43:52 +08:00
感觉还不如研究下怎么调整线程数、数据库连接这些东西。。。

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

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

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

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

© 2021 V2EX