FiveM “server thread hitch warning”: maksudnya dan cara mengatasinya
Amaran seperti “server thread hitch warning: timer interval of 250 milliseconds” bermaksud gelung utama pelayan tersekat selama itu. Pemain merasainya sebagai rubber-banding, tindakan yang lewat dan desync. Ini cara mencari puncanya tanpa meneka.
Maksud amaran ini
FXServer menjalankan kebanyakan logik permainan, termasuk setiap skrip pelayan, pada satu thread utama. Setiap pusingan gelung itu sepatutnya mengambil beberapa milisaat. Apabila satu pusingan mengambil masa jauh lebih lama, console memaparkan amaran hitch dengan tempoh tersekat itu. Amaran yang serupa boleh menyebut thread network atau sync.
- Beberapa hitch semasa pelayan bermula adalah normal: resource sedang dimuatkan dan pangkalan data sedang bersedia.
- Hitch yang terus berulang semasa bermain bermaksud ada masalah, dan pemain akan perasan.
1. Cari resource dengan profiler
FXServer mempunyai profiler terbina dalam. Jalankannya dalam console pelayan (Live Console txAdmin), bukan dalam console F8, semasa hitch sedang berlaku:
profiler record 500 profiler status profiler saveJSON hitch.json
profiler record 500 merakam 500 frame seterusnya. Apabila profiler status menunjukkan rakaman selesai, simpan, buka developer tools Chrome, pergi ke tab Performance dan muatkan fail itu. Hitch kelihatan sebagai lonjakan tinggi; zum ke salah satunya untuk melihat resource mana yang mengambil masa, sehingga ke fail dan barisnya.
2. Baiki punca biasa dalam skrip
- Gelung yang berjalan setiap tick. Gelung pelayan dengan
Wait(0)berjalan sekerap yang boleh. Kebanyakan gelung pelayan boleh menunggu ratusan atau ribuan milisaat antara pusingan. - Memproses semua pemain atau entiti serentak. Mengulang semua pemain atau kenderaan setiap saat menjadi mahal apabila bandar berkembang. Agihkan kerja itu, atau bertindak balas kepada event dan bukannya menyemak sepanjang masa.
- Query pangkalan data yang perlahan. Query yang mengimbas jadual besar tanpa index boleh mengambil ratusan milisaat. oxmysql melaporkan query perlahan dalam console; tambah index untuk lajur yang dicari, dan jangan jalankan query dalam gelung yang ketat.
- Spam event. Client yang mencetuskan event pelayan berkali-kali sesaat, secara tidak sengaja atau kerana menipu, membuatkan thread utama sibuk. Hadkan kadar event yang berat.
- Resource lama. Buang skrip yang tidak lagi digunakan, dan kemas kini yang masih digunakan.
3. Semak pelayan pangkalan data
Pelayan roleplay sentiasa menulis ke pangkalan data. Letakkan MariaDB pada mesin yang sama atau sangat dekat dengannya, pada storan NVMe, dengan memori yang cukup. Bersihkan jadual log yang membesar tanpa had, dan sandarkan pangkalan data secara berkala.
4. Semak hos
- Kelajuan CPU. Thread utama menggunakan satu teras, jadi kelajuan single-thread menentukan berapa banyak kerja skrip yang muat dalam setiap frame. Teras hos yang perlahan atau terlebih beban menukar kos skrip yang kecil kepada hitch.
- Antivirus pada pelayan Windows. Imbasan masa nyata pada folder pelayan yang besar boleh menggunakan banyak CPU. Pada pelayan Windows yang kami sokong, Microsoft Defender pernah menggunakan lebih banyak CPU daripada FXServer sendiri. Kecualikan folder pelayan,
FXServer.exedan program pangkalan data daripada imbasan, dan kekalkan perlindungan masa nyata untuk yang lain. - Program lain pada mesin yang sama. Bot, panel web dan sandaran yang berjalan pada waktu puncak bersaing untuk CPU yang sama.
Lag hanya pada skrin sesetengah pemain?
Lag client berbeza daripada hitch pelayan. Jika hanya sesetengah pemain tersekat-sekat, minta mereka membuka console F8 dan menjalankan resmon 1 untuk melihat resource mana yang paling banyak menggunakan masa di pihak mereka.
Elakkan ia berulang
- Buat profiling selepas menambah sebarang skrip besar, bukan berminggu-minggu kemudian.
- Pantau graf CPU pelayan anda pada waktu puncak.
- Uji kemas kini pada salinan pelayan terlebih dahulu.
Ralat skrip dalam konsol, seperti “attempt to index a nil value”, ialah masalah lain. Lihat cara membetulkan ralat itu dalam skrip ESX dan QBCore.
Hos pelayan FiveM anda di Singapura
Ping rendah untuk pemain di India, Malaysia dan Indonesia, pada AMD EPYC dengan NVMe dan perlindungan DDoS Gcore pada setiap IP.
