生产服务器需要配置什么 jvm 参数

2022-07-08 12:22:24 +08:00
 overthemoon

面试的时候遇到一个面试官,问我生产有没有配置垃圾回收什么的参数,我说我没配置过,面试官一口装逼的语气说,不配置怎么运行的?! 仿佛他知道了这个东西就牛逼起来了😅

5283 次点击
所在节点    Java
40 条回复
qinxi
2022-07-08 17:12:09 +08:00
@billytom #18 了解一下 hsts
Suddoo
2022-07-08 17:21:30 +08:00
默认配置对于大多数场景够用了,傻逼才去瞎几把调

为什么要调?出现性能问题才去调,为什么会出现性能问题?首先排查是不是服务器太差了,服务器性能差,还调个鸡儿!其次看代码是不是写成了一坨屎,比如生存大量无用对象、明明可以优化成批量查询的,后台生存 n 条 select 语句……等,一般优化到这一步,基本上就够了

新版本的 JDK 优化得很好了,GC 停顿控制在 1ms 以内,而且没啥参数给二把手们“调优”了,二把手们拿着锤子、看哪儿都是钉子
Suddoo
2022-07-08 17:27:25 +08:00
可能把一行垃圾代码改正确、性能直接提升 50%、远大于“调优”、在垃圾代码上再怎么“调优”、都于事无补

上来就“调优”的,都是傻逼
zr8657
2022-07-08 17:32:15 +08:00
就国内这帮公司水平还调优?老老实实加点内存、加个机器得了,跟楼上说的一样真不如改改那破代码。
Saxton
2022-07-08 21:59:43 +08:00
https://www.liaoxuefeng.com/article/1336345083510818

看这个你就懂了 其他都是假的
RedBeanIce
2022-07-08 22:09:46 +08:00
@lscbqr docker 会导致这个数量很少嘛。
RedBeanIce
2022-07-08 22:11:15 +08:00
@cheng6563 如果线上服务 16G 内存导致 dump 打包这个内存文件太大咋整。服务器就一直卡在那里。
我现在的公司好像是出现问题了,再加这个参数。

请问直接启动参数加有什么好处嘛
dqzcwxb
2022-07-08 23:02:22 +08:00
首先,抛弃 cms 换成 g1
然后 Xms Xmx 设置一下,运行时看情况需不需要调整 Xmn
其他的碰到了再说
securityCoding
2022-07-08 23:27:28 +08:00
面试遇到 gc 调优多吊的同学我一般会挂了他
dlmy
2022-07-08 23:39:20 +08:00
@RedBeanIce 现在公司一般都有 Devops 平台,是基于 Docker + K8s 来进行部署应用。有些参数必须显示指定,如我上面说的那些: 因为 JVM 默认会根据读到的 CPU 数目进行计算来设置数值,如果你的机器是 64 核,并行收集线程数就会有 64 个。
cheng6563
2022-07-09 00:31:35 +08:00
@RedBeanIce Java OOM 后本身就很有可能会失控,所以要加-XX:+ExitOnOutOfMemoryError 让其 OOM 时直接死掉再由服务管理器重启。来回这服务都不可用了,还怕 dump 太慢吗。
Bromine0x23
2022-07-09 02:02:37 +08:00
@lscbqr Java 8 的话 -XX:+UseContainerSupport
overthemoon
2022-07-09 02:29:20 +08:00
@VeryZero 我说了为什么一定要配置?面试官说那么重要‼️你居然不懂?
xaplux
2022-07-09 09:06:47 +08:00
面试官就是想考察一下你对 JVM 的了解,如果确实没有接触过生产环境配置,可以这么回答:生产环境这边基本都是运维部署,如果是我配置的话,我会大概什么什么设置多少,开启什么什么参数,等等。

而不是你回答一句 “没配置过” 就完事了。
overthemoon
2022-07-09 09:17:11 +08:00
@xaplux 我用的很尴尬的语气说的,当时还以为面试官接下来会继续问 jvm 其他问题,比如堆栈那些,没想到开始装逼说教了😅
xaplux
2022-07-09 09:23:24 +08:00
@overthemoon 嗯呢,并不是所有面试官都会继续问下去的,有时候自己也要占据一些主动权,建议不会的或者没有实际生产用过的可以根据自己的了解找补回来,而不是问一句你答一句
461368919
2022-07-09 11:25:53 +08:00
其实这就是 气场不合 吧
xmh51
2022-07-09 11:59:39 +08:00
@lscbqr 你是啥版本的。。jdk8 191 版本已经提供对 docker 的支持了 所以不需要管这个了
a15757817542
2022-07-09 12:45:36 +08:00
应该是问你 jvm 调优的一些思路
Uplay
2022-07-15 13:34:27 +08:00
@a15757817542 那大佬可以分享下有什么思路吗

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

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

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

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

© 2021 V2EX