FiveM “server thread hitch warning”: artinya dan cara mengatasinya
Peringatan seperti “server thread hitch warning: timer interval of 250 milliseconds” berarti loop utama server macet selama itu. Pemain merasakannya sebagai rubber-banding, aksi yang tertunda, dan desync. Berikut cara menemukan penyebabnya tanpa menebak-nebak.
Arti peringatan ini
FXServer menjalankan sebagian besar logika game, termasuk setiap script server, di satu thread utama. Setiap putaran loop itu seharusnya hanya butuh beberapa milidetik. Jika satu putaran jauh lebih lama, console menampilkan peringatan hitch beserta lamanya macet. Peringatan serupa bisa menyebut thread network atau sync.
- Beberapa hitch saat server baru berjalan itu normal: resource sedang dimuat dan database sedang bersiap.
- Hitch yang terus berulang saat bermain berarti ada masalah, dan pemain akan merasakannya.
1. Temukan resource-nya dengan profiler
FXServer punya profiler bawaan. Jalankan di console server (Live Console di txAdmin), bukan di console F8, saat hitch sedang terjadi:
profiler record 500 profiler status profiler saveJSON hitch.json
profiler record 500 merekam 500 frame berikutnya. Saat profiler status menunjukkan rekaman selesai, simpan, buka developer tools Chrome, masuk ke tab Performance, lalu muat file-nya. Hitch tampak sebagai lonjakan tinggi; perbesar salah satunya untuk melihat resource mana yang memakan waktu, sampai ke file dan barisnya.
2. Perbaiki penyebab umum di script
- Loop yang berjalan setiap tick. Loop server dengan
Wait(0)berjalan sesering mungkin. Sebagian besar loop server bisa menunggu ratusan atau ribuan milidetik di antara putaran. - Memproses semua pemain atau entity sekaligus. Mengulang semua pemain atau kendaraan setiap detik jadi mahal seiring kota tumbuh. Sebar pekerjaannya, atau bereaksi terhadap event alih-alih terus-menerus mengecek.
- Query database yang lambat. Query yang memindai tabel besar tanpa index bisa butuh ratusan milidetik. oxmysql melaporkan query lambat di console; tambahkan index untuk kolom yang dicari, dan jangan menjalankan query di dalam loop yang rapat.
- Spam event. Client yang memicu event server berkali-kali per detik, karena kesalahan atau curang, membuat thread utama sibuk. Batasi frekuensi event yang berat.
- Resource lama. Hapus script yang sudah tidak dipakai, dan perbarui yang masih dipakai.
3. Cek server database
Server roleplay terus-menerus menulis ke database. Taruh MariaDB di mesin yang sama atau sangat dekat, di storage NVMe, dengan memori yang cukup. Bersihkan tabel log yang terus membesar, dan backup database secara rutin.
4. Cek host
- Kecepatan CPU. Thread utama memakai satu core, jadi kecepatan single-thread menentukan seberapa banyak kerja script yang muat di setiap frame. Core host yang lambat atau kelebihan beban mengubah biaya script yang kecil menjadi hitch.
- Antivirus di server Windows. Pemindaian real-time pada folder server yang besar bisa memakan banyak CPU. Di server Windows yang kami tangani, Microsoft Defender pernah memakai CPU lebih banyak daripada FXServer sendiri. Kecualikan folder server,
FXServer.exe, dan program database dari pemindaian, dan biarkan perlindungan real-time aktif untuk yang lainnya. - Program lain di mesin yang sama. Bot, panel web, dan backup yang berjalan di jam sibuk berebut CPU yang sama.
Lag hanya di layar sebagian pemain?
Lag client berbeda dengan hitch server. Jika hanya sebagian pemain yang tersendat, minta mereka membuka console F8 dan menjalankan resmon 1 untuk melihat resource mana yang paling banyak memakan waktu di sisi mereka.
Cegah agar tidak terulang
- Lakukan profiling setelah menambahkan script besar, jangan menunggu berminggu-minggu.
- Pantau grafik CPU server Anda di jam sibuk.
- Uji update di salinan server lebih dulu.
Error script di konsol, seperti “attempt to index a nil value”, adalah masalah lain. Lihat cara memperbaiki error itu di script ESX dan QBCore.
Host server FiveM Anda di Singapura
Ping rendah untuk pemain di India, Malaysia, dan Indonesia, di AMD EPYC dengan NVMe dan perlindungan DDoS Gcore di setiap IP.
