周年庆服务器架构解密
前言
为防止家宽炸膛 我去雨云搞了台2C4G的机器 像SkyServer这样的最少也需要4C8G才能跑起来 我是如何顶级优化的呢 请看Jar
正文
java -Xms4096M -Xmx4096M -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar --nogui1. 内存设置
-Xms4096M: 初始堆内存大小 4GB-Xmx4096M: 最大堆内存大小 4GB两者相等可以避免运行时动态调整堆大小,提高性能
2. JVM 优化参数
-XX:+AlwaysPreTouch: 启动时预先分配并初始化所有内存,提高性能稳定性-XX:+DisableExplicitGC: 禁用显式 GC 调用(如 System.gc())-XX:+ParallelRefProcEnabled: 并行处理引用,加快 GC 速度-XX:+PerfDisableSharedMem: 禁用性能统计共享内存
3. G1GC 垃圾回收器配置
启用 G1GC 并进行了精细调优:
-XX:G1HeapRegionSize=8M: G1 区域大小 8MB-XX:G1HeapWastePercent=5: 堆浪费百分比 5%-XX:G1MaxNewSizePercent=40: 最大新生代占比 40%-XX:G1MixedGCCountTarget=4: 混合 GC 目标次数-XX:G1MixedGCLiveThresholdPercent=90: 混合 GC 存活对象阈值 90%-XX:G1NewSizePercent=30: 初始新生代占比 30%-XX:G1RSetUpdatingPauseTimePercent=5: RSet 更新暂停时间百分比-XX:G1ReservePercent=20: 预留内存百分比 20%-XX:InitiatingHeapOccupancyPercent=15: 触发并发 GC 的堆占用率 15%-XX:MaxGCPauseMillis=200: 目标最大 GC 暂停时间 200ms-XX:MaxTenuringThreshold=1: 对象晋升老年代的最大年龄-XX:SurvivorRatio=32: 幸存区比例
4. 来源标识
-Dusing.aikars.flags=https://mcflags.emc.gs: 标记这些参数来自 Aikar 的优化建议-Daikars.new.flags=true: 表明使用的是新版标志
5. 服务器启动
-jar server.jar: 运行 server.jar 文件--nogui: 以无界面模式启动(适合服务器环境)
- 感谢你赐予我前进的力量

