Bagaimana kerja Minecraft (Apa yang menyebabkan lag?)
Kunci untuk memahami apa yang menyebabkan ketinggalan adalah memahami bagaimana Minecraft berfungsi. Perisian pelayan Minecraft semuanya beroperasi dalam masalah yang serupa dengan satu masalah utama: tidak ada had multi-threading atau timing untuk gelung permainan utama. Apabila pelayan pergi ke tic, ia berjalan melalui setiap kemas kini TileEntity, kemas kini entiti, menyekat pembaruan, peristiwa dan proses lain sehingga selesai. Ini semua berlaku pada satu utas, dan gelung seterusnya tidak dapat bermula sehingga yang terakhir selesai. Dunia tidak akan diperbaharui, pemain tidak akan kelihatan bergerak dan entiti akan dibekukan di tempatnya. Sebaik-baiknya setiap tic harus mengambil tidak lebih dari 50ms untuk mengekalkan 20 Tics Per Second (TPS). Ini boleh menjadi serendah 55.55ms untuk 18 TPS dengan masalah minimum. Yang lebih rendah dari ini dan anda akan mula melihat ketinggalan.
Sebab-sebab kebiasaan ketinggalan
Terdapat banyak perkara yang boleh menyebabkan ketinggalan tetapi beberapa daripadanya akan menjadi penyebab paling mungkin bagi kebanyakan pelayan.
- Penggunaan fail : Apa-apa pemalam yang selalu dibaca dari fail pemain, terutama pada peristiwa seperti pergerakan, kerosakan atau berinteraksi. Beberapa contohnya ialah beberapa flag PVP atau plugin Glow yang akan terus dibaca dari fail pemain.
- Fail rata sebagai pangkalan data : Apabila anda mempunyai plugin yang menggunakan fail besar untuk melacak banyak data yang berulang melalui fail itu atau dalam memori bergantung pada bagaimana ia disimpan akan memakan waktu lama. Banyak pemalam melakukan ini dan tidak mengambil langkah berjaga-jaga terhadap bagaimana, apabila pangkalan data menjadi kembung, masa pemprosesan akan mempengaruhi pengguna. Anda akan banyak melihatnya semasa memuat konfigurasi MagicSpells yang besar, atau menggunakan sistem kebenaran yang menggunakan YAML dan bukannya pangkalan data yang betul seperti PEX dan GroupManager.
- Terlalu banyak operasi : Apabila pemalam memunculkan terlalu banyak entiti, atau cuba melakukan tugas yang kompleks pada peristiwa seperti pergerakan, anda akan mula melihat ketinggalan. Walaupun setiap larian mengambil masa kurang dari 1 ms, ketika anda memproses acara 20k kali sesaat, ia menjadi eksponen. Plugin yang boleh menyebabkan ini adalah plugin penyuntingan dunia seperti VoxelSniper dan WorldEdit; atau plugin perlindungan seperti Anti Cheats dan World Protection.
- Terlalu banyak potongan dimuat : Satu bahagian adalah
16*16*256. Ini mungkin tidak kedengaran banyak tetapi apabila dikalikan itu bermakna terdapat 65.536 blok per bahagian. Setiap pemain boleh mempunyai lebih daripada 200 potongan di sekelilingnya, bergantung kepada konfigurasi anda. Itu melebihi 13,107,200 blok. Ini memerlukan banyak memori. Juga, jika 1% daripada mereka adalah TileEntities yang 131,072 TileEntities dimuatkan yang perlu mengemaskini setiap tic. Mod terkenal kerana mempunyai masa pemprosesan yang perlahan di TileEntities.
- Cascading WorldGen : Ini adalah apabila plugin atau mod menghasilkan struktur di luar bahagian yang diberikan. Ini menyebabkan bahagian seterusnya dimuat, dihasilkan dan kemudian mencetuskannya lagi jika ia juga mula mempunyai struktur yang melimpah ke bahagian berikutnya. Ini adalah reka bentuk yang tidak baik bagi pihak pencipta dan sebarang plugin atau mod yang dilakukan harus segera dihapuskan.
- Entiti jubin : Lihat bahagian LagGoggles di bawah.
Mencari punca lag biasanya merupakan prosedur mudah pada masa ini kerana kebanyakan perisian pelayan Minecraft dibina dengan alat profil yang disertakan.
Laporan masa untuk Spigot / PaperSpigot
Untuk mendapatkan laporan pemasaan terperinci, anda boleh menggunakan arahan ikut.
/timings on
Anda mahu menunggu beberapa minit dan membiarkannya tertangguh semasa masa anda berjalan. Selepas beberapa ketika, buat laporan.
/timings paste
Ini akan memberi anda pautan ke laman web dengan perincian laporan yang bagus dengan pilihan mudah untuk menyaring semua data yang anda dapatkan. Anda boleh mengetahui lebih lanjut mengenai cara membacanya di wiki pemasaan Spigot .
Anda akan mahu mematikan masa selepas itu, kerana anda tidak mahu data sampah menyumbat bacaan anda yang seterusnya, dan masa menambah masa untuk tic.
/timings off
Laporan Timing untuk Sponge
Untuk mendapatkan laporan pemasaan terperinci, anda boleh menggunakan arahan ikut.
/sponge timings on
Anda mahu menunggu beberapa minit dan membiarkannya tertangguh semasa masa anda berjalan. Selepas beberapa ketika, buat laporan.
/sponge timings report
Ini akan memberi anda pautan ke laman web dengan perincian laporan yang bagus dengan pilihan mudah untuk menyaring semua data yang anda dapatkan. Memandangkan sistem timing Sponge didasarkan pada Spigot, anda boleh mengetahui lebih lanjut mengenai cara membaca ini di wiki waktu Spigot .
Anda akan mahu mematikan masa selepas itu, kerana anda tidak mahu data sampah menyumbat bacaan anda yang seterusnya, dan masa menambah masa untuk tic.
/sponge timings off
Anda juga boleh menetapkan semula masa.
/sponge timings reset
Langkah mengurangkan lag
- Gunakan argumen yang betul untuk fail skrip anda untuk melancarkan Minecraft. Ketahui lebih lanjut mengenai argumen Java yang sesuai di sini
- Gunakan LuckPerms atau pengurus Permissions yang menggunakan pangkalan data yang betul dan bukannya fail rata
- Elakkan sama sekali memuat pemuat
- Keluarkan apa-apa yang menyebabkan pembaziran dunia
- Hadkan plugin Anti Cheat agar tidak terlalu bersemangat
- Hadkan jarak pandangan pemain masuk
server.properties
- Hapuskan permaidani bermusuhan selepas jangka masa yang ditetapkan
- Mulakan semula pelayan setiap hari untuk membersihkan kebocoran dari Jawa
- JANGAN muat semula pelayan, ini menyebabkan kebocoran dan isu-isu lain
- Gunakan versi pemuat FastAsync seperti WorldEdit dan VoxelSniper
- Hadkan saiz dunia anda sehingga ketulan baru tidak selalu dibuat
- Hadkan jumlah pemalam yang anda gunakan. Tidak semua plugin dibina dengan baik dan semakin banyak masalah yang anda hadapi
LagGoggles
Sebilangan besar kelewatan pada pelayan modded berasal dari entiti jubin. Ini adalah entiti yang dibuat untuk blok yang digunakan untuk memproses fungsi dan peristiwa blok. Sekiranya ini mengambil masa terlalu lama atau terlalu banyak, ia dapat meningkatkan masa untuk mengurangkan jumlah TPS pelayan. Cara untuk menggambarkan masalah ini adalah dengan menggunakan mod yang disebut LagGoggles. Anda boleh memuat turun mod ini dari CurseForce .