Tối ưu hiệu năng Hướng dẫn 6 phút đọc

Tối ưu redstone cho máy chủ Minecraft SMP trên PIKAMC


Máy phân loại đồ bắt đầu nghẽn sau mỗi đợt thu hoạch? Cả server khựng lại khi dàn piston bật cùng lúc? Trên máy chủ Minecraft Java chạy Paper, các triệu chứng này có thể đến từ dây redstone, hệ thống hopper hoặc mob quanh farm. Hãy chọn phần hướng dẫn phù hợp với hiện tượng bạn gặp và dùng spark để đo trước khi chỉnh.

1. Giảm tải từ clock và dàn piston

Nếu server chỉ khựng ở một thời điểm trong chu kỳ farm, hãy xem các thiết bị nào kích hoạt cùng lúc. Nếu máy vẫn liên tục cập nhật dù kho trống, hãy kiểm tra clock và xem khu vực đó có còn được máy chủ xử lý hay không.

  • Dừng clock khi máy rảnh. Thêm công tắc hoặc dùng tín hiệu báo có vật phẩm để hệ thống chỉ chạy khi cần.

  • Chia piston thành từng nhóm. Nếu thiết kế cho phép, kích hoạt các nhóm ở những tick khác nhau để giảm tải dồn vào một tick. Sau đó kiểm tra lại toàn bộ chu kỳ farm.

  • Rút gọn các nhánh redstone thường xuyên đổi tín hiệu. Khi thêm repeater, hãy tính đến độ trễ mới. Với cửa piston hoặc mạch phụ thuộc thứ tự cập nhật, thử cả lúc bật và lúc tắt.

2. Dùng spark để khoanh vùng lag

Trên PIKAMC, mở Bảng điều khiển → Console, cho farm chạy trong điều kiện thường gây lag rồi nhập lệnh dưới đây. Nếu chạy trong game, thêm / trước lệnh.

spark profiler start --timeout 300

Sau 5 phút, spark trả về liên kết báo cáo. Paper tích hợp spark từ phiên bản 1.21. Nếu server chỉ khựng từng đợt ngắn, hãy dùng lệnh sau trong một lượt đo riêng để tập trung vào các tick vượt 50 ms. Hướng dẫn đo hiệu năng của PaperMC · Tài liệu lệnh spark

spark profiler start --timeout 300 --only-ticks-over 50

Mở nhánh Server thread trong báo cáo và xem máy chủ dành nhiều thời gian nhất cho phần nào.

Phần chiếm nhiều thời gianNên kiểm tra
Cập nhật dây redstone, block lân cận hoặc pistonClock chạy liên tục, dây thường xuyên đổi tín hiệu, nhiều piston bật cùng lúc.
Hopper hoặc chuyển vật phẩmKho phân loại, chuỗi hopper dài, container đầy hoặc plugin xử lý sự kiện chuyển đồ.
Mob, villager hoặc pathfindingSố mob quanh farm, đường đi của villager và các block thay đổi gần chúng.

MSPT là thời gian máy chủ dùng để xử lý một tick. Để duy trì 20 TPS, máy chủ có khoảng 50 ms mỗi tick. Khi so sánh trước và sau, ghi lại MSPT p95 để xem 95% số tick hoàn thành trong bao lâu và MSPT max để xem tick chậm nhất. Giữ thời lượng đo, số người chơi quanh farm và lượng vật phẩm đầu vào tương đương giữa hai lần thử. Cách đọc báo cáo spark · TPS và MSPT

3. Tinh chỉnh hopper nếu kho phân loại gây lag

Rà lại các tuyến chuyển đồ dài, những nhánh kho hiếm dùng và số hopper phải hoạt động cùng lúc. Nếu báo cáo vẫn cho thấy khâu chuyển đồ chiếm nhiều thời gian, hãy dùng mục Sao Lưu trên PIKAMC để sao lưu world và cấu hình trước khi thử thay đổi trên bản sao máy chủ.

Trong Tệp tin → spigot.yml, tìm mục world-settings.default. Đây là các giá trị mặc định theo tài liệu Paper. Tài liệu spigot.yml

world-settings:
  default:
    ticks-per:
      hopper-transfer: 8
      hopper-check: 1
    hopper-amount: 1
Tùy chọnTác dụng
hopper-transferSố tick giữa các lần hopper chuyển vật phẩm. Tăng giá trị có thể làm kho xử lý ít đồ hơn trong cùng một khoảng thời gian.
hopper-checkSố tick giữa các lần hopper kiểm tra để kéo vật phẩm.
hopper-amountSố vật phẩm hopper chuyển mỗi lần. Thay đổi giá trị có thể ảnh hưởng đến bộ lọc dựa vào số lượng vật phẩm.

Bạn có thể thử tăng riêng hopper-transfer từ 8 lên 10, sau đó khởi động lại bản sao máy chủ. Kiểm tra sản lượng, vị trí vật phẩm được phân loại và tình trạng dồn đồ khi nhiều farm xả vào kho cùng lúc.

Trong config/paper-world-defaults.yml, hopper.cooldown-when-full mặc định là true và giúp hopper giảm số lần thử kéo đồ khi đã đầy. Giữ hopper.disable-move-event: false nếu plugin bảo vệ hoặc quản lý kho phụ thuộc vào sự kiện chuyển vật phẩm. Cấu hình hopper của PaperMC

4. Kiểm tra đường đi của mob quanh farm

Nếu spark cho thấy pathfinding chiếm nhiều thời gian khi các block gần mob liên tục thay đổi, hãy thử tùy chọn sau trong mục misc của config/paper-world-defaults.yml trên bản sao.

misc:
  update-pathfinding-on-block-update: false

Tùy chọn này giảm việc tính lại đường đi do block thay đổi. Sau khi khởi động lại, hãy thử các khu dẫn mob hoặc villager có cửa, piston và vách đóng mở tự động để kiểm tra hành vi thực tế. Cấu hình world của PaperMC

Giữ environment.max-block-ticks và environment.max-fluid-ticks ở giá trị mặc định, trừ khi đã xác định một thiết kế hợp lệ đang chạm giới hạn. Hai tùy chọn này áp dụng cho số tick được lên lịch của block và chất lỏng mà máy chủ xử lý trong mỗi tick. Tài liệu giới hạn tick của PaperMC

5. Thử Alternate Current khi dây redstone là điểm nghẽn

Paper hỗ trợ VANILLA, EIGENCRAFT và ALTERNATE_CURRENT. Alternate Current giảm số phép tính tín hiệu và số lần cập nhật block lân cận. Cả Eigencraft lẫn Alternate Current đều có thể thay đổi cách dây redstone hoạt động, đặc biệt với mạch phụ thuộc thứ tự cập nhật. Tài liệu redstone của PaperMC

Trên bản sao máy chủ, vào Tệp tin → config/paper-world-defaults.yml, tìm mục misc hiện có và sửa khóa sau.

misc:
  redstone-implementation: ALTERNATE_CURRENT

Lưu rồi khởi động lại máy chủ. Nếu world có paper-world.yml riêng, kiểm tra xem file đó có đặt giá trị ghi đè hay không. Trong lượt thử đầu tiên, chỉ đổi redstone-implementation để dễ xác định nguyên nhân nếu một mạch chạy sai. Thử lại cửa piston, máy phân loại và các farm quan trọng. Nếu mạch sai nhịp hoặc sản lượng giảm ngoài mức chấp nhận được, khôi phục giá trị ban đầu rồi khởi động lại. Cấu trúc file cấu hình Paper

Đo lại trước khi áp dụng lên máy chủ chính

Thử một thay đổi mỗi lượt, rồi chạy lại kịch bản đã đo ban đầu. So sánh MSPT p95, MSPT max và sản lượng farm. Kiểm tra cả lúc hệ thống chạy bình thường lẫn lúc nhiều farm xả đồ đồng thời. Chỉ áp dụng lên máy chủ chính khi kết quả đo cải thiện và các mạch quan trọng vẫn hoạt động đúng yêu cầu.

Câu hỏi thường gặp

TPS vẫn là 20 thì có cần kiểm tra redstone không?

Nếu người chơi vẫn thấy server khựng, hãy xem MSPT p95 và max. Báo cáo spark chỉ lấy mẫu các tick vượt 50 ms có thể giúp xác định đoạn xử lý gây khựng. Hướng dẫn đọc TPS và MSPT của spark

Tăng hopper-transfer có thể làm máy lọc chạy sai không?

Có. Một số thiết kế dựa vào nhịp chuyển đồ hoặc tốc độ vật phẩm đầu vào. Hãy thử cả lúc ít đồ và lúc farm xả nhiều để kiểm tra nghẽn, tràn hoặc phân loại sai.

Có nên nâng RAM nếu server lag khi bật farm?

Hãy xem báo cáo spark trước. Nếu thời gian xử lý tập trung ở redstone, hopper hoặc AI trên Server thread, xử lý phần đó trước. Nếu báo cáo cho thấy các đợt thu gom bộ nhớ kéo dài, hãy xem thêm số liệu bộ nhớ. Hướng dẫn đo hiệu năng của PaperMC

Nếu cần PIKAMC hỗ trợ đọc báo cáo, hãy gửi liên kết spark, phiên bản Paper và thao tác làm lag xuất hiện, chẳng hạn “bật cùng lúc cả dàn piston” hoặc “xả đồ từ farm vào kho phân loại”.