Bỏ qua để đến nội dung

JVM & thiết lập nền tảng

Phần 3.1Kiểm chứng 2026-07-22

Cờ khởi động JVM, nguyên tắc cấp RAM và thiết lập máy chủ ban đầu.

Trước khi đọc
  • Xác định phiên bản Java mà phần mềm máy chủ yêu cầu
Hoàn thành khi bạn có thể
  • Khởi động máy chủ bằng Java phù hợp
  • Tránh sao chép JVM flags thiếu kiểm chứng
6 đề mục45 hình2 đoạn mã~13 phút đọcXem nguyên tác ↗
Trở về Thiết đặt hiệu năng
Tùy chỉnh cách đọc
Trong trang này5 đề mục
  1. 3.0 · Tài nguyên tham khảo
  2. 3.1 · Khái niệm và lý do thiết đặt
  3. 3.1.1 · JVM startup flags — Cờ JVM phù hợp
  4. 3.1.2 · Fundamentals — Nền tảng
  5. 3.1.3 · Thiết lập máy chủ cơ bản

Mẫu với phần mềm máy chủ Leaf 26.2 bản Stable 27/06/2026 thiết đặt tham khảo trước:

- purpur.yml
- spigot.yml
- bukkit.yml
- server.properties
- gale-global.yml
- gale-world-defaults.yml
- leaf-global.yml
- paper-global.yml
- paper-world-defaults.yml
[!!!] Khuyến khích tạo thêm tệp paper-world.yml tại thư mục world_nether
Mẫu với phần mềm máy chủ Folia 26.2 thiết đặt tham khảo trước:
- https://spark.lucko.me/5Us40AInJY
- pufferfish.yml thiết đặt tương tự leaf-global.yml
1776586787393.webp

Tài nguyên tham khảo

Ngoài các danh mục mình khuyến khích đọc hiểu tại 2.0, bài viết từ bên dưới trở đi sẽ được tham khảo thêm với các nguồn:

  1. Dữ liệu Discord / Facebook Group / Youtube của những máy chủ lớn tại Việt Nam tính tới thời điểm viết bài.
  2. Dữ liệu 3.200+ người từng chơi máy chủ mình.

Để xác định được máy chủ của bạn có phát triển mượt mà sau khi thay đổi thiết đặt như trên hay khum, quản trị viên vẫn nên đầu tư thời gian để chăm sóc nhân sự/ cộng tác viên/ người chơi:

  1. Spark - Gần như là công cụ đi liền với bạn trong toàn bộ quá trình phát triển máy chủ.
    Không cần đọc hiểu hết, chỉ cần thu nhập dữ liệu --> Có đường dẫn công khai (Link) --> Chuyển toàn bộ báo cáo Spark Profiler sang định dạng .json --> Quăng lên cho Gemini Pro/Copilot phân tích từng khái niệm --> AI sẽ giải thích 24/7 cho bạn.
  2. 24 - 72h đầu quan sát phản hồi người chơi.

Khái niệm và lý do thiết đặt

JVM startup flags — Cờ JVM phù hợp

Bộ cờ JVM phù hợp với máy chủ của bạn? Phần lớn các máy chủ Minecraft hiện nay đều sử dụng Aikar’s Flags. Tuy nhiên, các thiết lập này được tạo từ thời Java 8 (2014 – 2018), khi hệ sinh thái Java còn đơn giản. Đến nay, Minecraft và Java đã phát triển rất xa (tiệm cận 26.x), nên nhiều flags đã lỗi thời hoặc được tích hợp sẵn trong các JVM đời mới. Việc chỉ dùng Aikar’s Flags thường không tạo khác biệt rõ rệt, thậm chí đôi khi chỉ mang tính “cho có”. Cuối cùng, thiết lập JVM vẫn phụ thuộc chủ yếu vào phần cứng, mục tiêu phát triển máy chủ và số lượng người chơi thực tế của máy chủ bạn.
> Tham khảo bài viết giải thích chi tiết các khái niệm của meowice-flags dành cho SMP.
> Tham khảo v2flags dành cho máy chủ / Client chiến Modpack cực nặng.


1776591919591.webp


Ram thì đừng ăn quá, máy chủ Minecraft chỉ nên lấy 80%. OS, JVM, spike / buffer còn dùng thêm RAM ngoài phần bạn cấp như Metaspace (class) Thread stack Buffer, cache nội bộ, để quá = tràn Ram khi vượt ngưỡng = OOM Killer sập máy chủ ngay lập tức. Nội dung tuỳ chỉnh nhiều nên tham khảo băng ghi hình sau:
1776596123081.webp
Leaf cũng có một bài viết chi tiết + vài Flag thú vị mình có sử dụng. Mẫu của máy chủ mình đang dùng, <40 người chơi thường xuyên với Amazon Corretto:
JSON:
-XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=16M -XX:G1NewSizePercent=28 -XX:G1MaxNewSizePercent=50 -XX:G1ReservePercent=15 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -XX:+UseStringDeduplication -XX:+DisableExplicitGC -XX:+UseLargePages -XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2M -XX:ReservedCodeCacheSize=512M -XX:AllocatePrefetchStyle=3 -XX:+TieredCompilation -XX:TieredStopAtLevel=4 -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+OptimizeStringConcat -XX:+PerfDisableSharedMem -Dgale.log.warning.offline.mode=false -Dgale.log.warning.root=false -DGeyser.RakGlobalPacketLimit=100000 -DGeyser.RakPacketLimit=1500 -DGeyser.RakRateLimitingDisabled=true -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -DLeaf.disable-vanilla-profiler=true -DLeaf.enableFMA=true -Dpaper.explicit-flush=true -Dpaper.playerconnection.keepalive=180 -Dsun.net.maxDatagramSockets=16384 -Dterminal.ansi=true -Dterminal.jline=false

-DGeyser.RakGlobalPacketLimit
-DGeyser.RakPacketLimit
-DGeyser.RakRateLimitingDisabled


:|là các cờ Geyser mình thêm, khi nhà cung cấp Host bên Việt Nam gặp tình trạng RakPacketLimit với người chơi Bedrock.
Mẫu dành cho máy chủ LocalHost kiểm thử tính năng mới, đang dùng với BellSoft:
YAML:
@echo off java -Xms900M -Xmx900M ^
-XX:+UseG1GC ^
-Djava.awt.headless=true ^
-jar leaf.jar nogui PAUSE

Các công cụ mình thường sử dụng để xác định chuẩn sau 1 tuần thử nghiệm:
- GC log (Nhật ký Garbage Collection) trong Java là công cụ chẩn đoán hiệu năng quan trọng, ghi lại hoạt động dọn dẹp bộ nhớ của JVM, giúp xác định lỗi bộ nhớ, tối ưu hóa thời gian tạm dừng - pauses và theo dõi sử dụng heap.
java -Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=10,filesize=100M -jar server.jar
- JDK Mission Control

Fundamentals — Nền tảng

:-BKhông tải trước thì sao? --> Người chơi vừa vào khám phá, tạo nhiều khu vực mới --> tụt tps máy chủ trầm trọng. Giải thích rõ hơn tại QnA của Chunky.
image-png.48668
35H501gQe5.png
Không gì là hoàn hảo, tải trước bản đồ rất tốn tài nguyên bộ nhớ, tải càng to thì càng nặng và nếu to thì tải rất lâu. Tính trước dung lượng máy chủ của bạn khi sử dụng Chunky / Chunksmith / Chunker với trang https://onlinemo.de/world
1776594857617.webp


  • View Distance và Simulation Distance - Chunk
Simulation Distance là khoảng cách mà thế giới xung quanh bạn “hoạt động thật”, ví dụ như quái di chuyển, cây trồng phát triển hay đá đỏ/máy Farm chạy. Còn View Distance là khoảng cách người chơi có thể nhìn thấy xa đến đâu.
Simulation DistanceView Distance
Rất quan trọng vì ảnh hưởng trực tiếp đến tps của máy chủ. Mặc định Vanilla là 10 chunks, và cực nhiều máy Farm trên mạng cũng được thiết kế theo mức này. Thông thường, để 5 chunks để vẫn chơi thoải mái, nhưng nếu bạn làm SMP hoặc Skyblock thì có thể để thấp hơn nữa.
simulation-distance-has-it-changed-v0-s5t7j5orwe1f1.png
Chủ yếu ảnh hưởng đến việc bạn nhìn xa hay gần. Tăng lên sẽ giúp cảnh đẹp hơn, nhưng sẽ tốn thêm RAM phía máy chủ, khuyến khích hỗ trợ phía Client người chơi sử dụng những Mods như Bobby, Voxy để tăng tầm nhìn trong máy chủ lên tận 1200+ chunks.
Quản trị viên còn có thể chỉnh riêng các thông số này cho từng thế giới - world, world_nether, world_the_end trong tệp spigot.yml --> server.properties cấu hình, không cần tất cả phải giống nhau. Tổng hoạt động của Chunk - ServerChunkCache.tick() mà bạn đọc được trong Spark nên < 30% toàn thời gian.
1776634683611.webp

  • Giữ số lượng Entity ở mức hợp lý / LagMachine cơ bản

Các “entity” (như quái vật, vật phẩm đến cái rương, mô hình vật phẩm…) tiêu tốn máy chủ khá nhiều tài nguyên để hoạt động. Nếu có quá nhiều Entity cùng lúc hoạt động, máy chủ sẽ bị sập.


1776967920241.webp


[!!!] Đây cũng là mô hình gây Lag phổ biến nhất mà bất kỳ người chơi nào trong máy chủ của bạn cũng có thể áp dụng, có thể kể đến như:

Tập trung Thuyền/Khung vật phẩmĐá đỏ, máy đẩy - Redstone/Piston hàng loạtThác Snowball
maxresdefault.jpg
1200px-Lag.png
maxresdefault.jpg
  1. Thiết đặt giới hạn từng loại Entity trong tệp spigot.yml
  2. Cài LagFixer hoặc FarmLimiter / EntityLimiter
  1. Thiết đặt giới hạn từng loại Entity trong tệp spigot.yml
  2. Cài LagFixer hoặc FarmLimiter / EntityLimiter

Để kiểm tra và tìm nguyên nhân gây lag, Spark sẽ giúp quản trị viên xem cái gì đang làm máy chủ chậm và kiểm tra xem các thay đổi đằng ấy chỉnh có hiệu quả hay không. Tổng hoạt động của Entity - EntityTicksList.forEach() mà bạn đọc được trong Spark nên < 30% toàn thời gian. Nếu vượt quá, máy chủ sẽ bắt đầu chậm lại.

1776634683611.webp


  • Hiểu cách quái xuất hiện
^:)^ Băng ghi hình giải thích rõ chi tiết từng khái niệm với Python ^:)^
mobspawn-range.BkbONoCk.webp
  • Các cột màu nâu = khu vực mà quái có thể xuất hiện quanh người chơi.
  • Vùng hình cầu màu đỏ là nơi quái có thể xuất hiện, nằm từ 24 - 128 block.
  • Vùng hình cầu màu vàng là khu vực an toàn gần người chơi (< 24 block), mobs sẽ không xuất hiện ở đây.
  • Những thực thể ở trong vòng 32 block quanh bạn, sẽ hoạt động bình thường.
  • Những con quái ở xa hơn, từ 32 - 128 block, vẫn tồn tại nhưng sẽ hoạt động chậm hơn.
  • Không gì tồn tại xa hơn 128 block.
:-BNói đơn giản: quái chỉ xuất hiện ở một khoảng cách nhất định, và càng xa bạn thì chúng càng “ít hoạt động” hoặc biến mất luôn.

Vanilla / Paper mặc định nếu bạn không đổi gì --> sẽ Lag khi đông người chơi Bạn có thể dùng lệnh /paper mobcaps + /paper playermobcaps để xem chi tiết về cách mob xuất hiện quanh người chơi. Giải thích chi tiết hơn trong technical minecraft Discord - TMC

  • Griefing - Suc' vat^. đi phá hoại

Các phương thức Griefing (phá game) là hành động cố tình gây khó chịu, quấy rối hoặc phá hoại trải nghiệm chơi của người khác trong Minecraft. Sau khi xem nhiều phương tiện đại chúng về việc “Hủy diệt” các máy chủ Pay to Win + Không luật lệ + SMP trên nền tảng YouTube, một bộ phận không nhỏ người chơi Việt Nam có xu hướng thử áp dụng lại các cách đó lên những máy chủ có cấu hình hoặc quản lý chưa tốt :|

Thác đá cuội = Dung nham + NướcTNT / end_crystal / respawn_anchorCheater - Gian lận
maxresdefault.jpg
maxresdefault.jpg
maxresdefault.jpg
Thường thấy nhất do dễ làm, dễ ức chế người chơi và cực tốn thời gian phá đi == AntiLavaCast là được <3Không ai thích công trình tâm huyết của mình biến mất sau một đêm cả.Hack Client, Bypass, UUID Proof, Exploit khai thác lỗ hổng...

-- Cay không? Cay chứ - Quản trị viên có thể áp dụng những cách thức sau để giảm thiểu hậu quả:

Hướng giải quyết
Ưu / Nhược điểm
Minh họa
CoreProtect -- Khôi phục nguyên trạng AntiLavaCastHoàn trả đồ bị mất, công trình trở về như mới, truy vết câu lệnh người chơi sử dụng. Mò lại Lịch sử dấu chân Internet - Digital Footprint của người chơi từ phá hoại công trình tới lấy trộm vật phẩm, tương tác động vật + Addons kết hợp nhiều.- Docs dễ hiểu, cộng đồng - Dev hỗ trợ nhiệt tình.

(:|Cơ sở dữ liệu(Database) vì thế Ưu điểm ở trên mà PHÌNH TO siêu nhanh, chiếm trọn dung lượng lưu trữ vốn ít ỏi của máy chủ bạn.
1776641030366.webp

Mặc định SQLite, nên khi >20 người chơi cùng tương tác, sẽ tụt tps đi một ít. Quản trị viên cần có thời gian thiết đặt tệp config.yml, chuyển từ SQLite mặc định --> MariaDB, quản lý thông qua phpmyadmin hoặc HeidiSQL.
:-"Cần có thời gian hướng dẫn nhân sự máy chủ sử dụng. Staff mà lười tìm hiểu lịch sử khu vực cần khôi phục, dùng lệnh ngay --> sẽ dẫn đến tình trạng nhân bản Vật phẩm - Item Dupe.
Ưu tiên cho những máy chủ SMP nhỏ, Quản trị viên muốn dành thời gian tương tác với người chơi.
CHV7ZR8.png
GriefPrevention / Lands / SimpleClaimSystem
/ Towny
-- Người chơi chiếm trọn một khu vực
:)Không cần cơ sở dữ liệu, người chơi dùng vài câu lệnh đơn giản là xong, tích hợp GUI đồ họa nhìn chiến đét ^:)^ Kết hợp với hệ thống Rank, quản trị viên có thể rao bán đặc quyền nhất định.

:|NBT/Datapack/Vật phẩm tùy chỉnh có thể không bảo vệ được. Người mới vào, sẽ bị khu vực được chiếm của người đi trước cản trở.
1776640969971.webp
1776640903865.webp
Máy chủ đông, Staff muốn phát triển sâu tính năng.
1776641319257.webp
1VrUtMol.png
Rules/Code of Conducts -- Luật bảo vệ tài sản người chơi:DNgười chơi biết đọc là hiểu.

<(")Giá xăng tăng làm con người ta quên mất con chữ.
1776641505978.webp
AntiCheat -- Chặn suc' vat^.Bảo vệ 80 - 90% máy chủ của bạn.

20 - 10% còn lại.
Gần như ai cx bít rùi :^)
  • gamerule - thiết lập quyền kiểm soát trò chơi
Dưới đây là vài gamerule thường dùng trong các máy chủ SMP/Chill
Vui lòng đọc trước cập nhật tại https://minecraft.wiki/w/Game_rule
elytra_movement_check
Gợi ý: false
Tùy chọn này quyết định việc máy chủ có kiểm tra tốc độ di chuyển của người chơi khi họ đang sử dụng elytra hay không. Bật lên thường giúp giảm hiện tượng giật, rung khi bay do lag trong môi trường nhiều người chơi. Tắt = đỡ phải kiếm tra.
fire_spread_radius_around_player
Gợi ý: 0
Tùy chọn này kiểm soát khoảng cách tối đa (tính bằng block) mà lửa có thể lan ra xung quanh người chơi. Nếu đặt là -1 thì lửa có thể lan không giới hạn khoảng cách.
immediate_respawn
Gợi ý: true Hồi sinh ngay lập tức, không có màn hình lý do hẻo.
keep_inventory
Giữ lại kho đồ khi hẻo.
locator_bar
Hiển thị vị trí người chơi hoặc vật thể trên thanh kinh nghiệm.
player_movement_check
Gợi ý: false Tùy chọn này quyết định việc máy chủ kiểm tra tốc độ di chuyển của người chơi.
players_sleeping_percentage
Bao nhiêu % người chơi cần đi ngủ để chuyển sang ban ngày. Nếu đặt bằng 0, chỉ cần 1 người ngủ là đủ để trời sáng ngay lập tức. Nếu đặt lớn hơn 100, mọi người cùng mất ngủ.
respawn_radius
Phạm vi (tính bằng số block) xung quanh xuất phát điểm của thế giới mà người chơi có thể xuất hiện khi lần đầu vào máy chủ hoặc khi hẻo mà không có điểm hồi sinh riêng.

Thiết lập máy chủ cơ bản

:anime1:Quản trị viên chưa có kinh nghiệm nên thử trước với việc mở máy chủ cá nhân - Self-host tại máy tính nhà hoặc Free-host trên mạng
Sau khi đã có 30 phút kinh nghiệm nhất định, bạn có thể: