← All posts FiveM

Cara Mengatasi FiveM Server Hitch Warning

Arti pesan "server thread hitch warning" di FiveM, kapan boleh diabaikan, penyebab umumnya, dan cara mencari serta memperbaiki resource penyebabnya.

Kalau kamu mengelola server FiveM, cepat atau lambat kamu akan melihat pesan seperti ini di console:

server thread hitch warning: timer interval of 412 milliseconds

Pesan ini sering bikin panik, tapi sebenarnya informatif. Artinya: thread utama server terlambat menyelesaikan satu siklus kerja (tick). Selama ratusan milidetik itu, server tidak memproses apa pun. Kalau sering terjadi saat jam ramai, pemain akan merasakan desync, delay interaksi, atau kendaraan yang "loncat".

Artikel ini menjelaskan arti hitch warning, kapan boleh diabaikan, dan cara mencari serta memperbaiki penyebabnya.

Apa arti hitch warning?

FXServer menjalankan script resource di thread utama server dalam siklus berulang. Setiap siklus seharusnya selesai dalam waktu singkat. Kalau ada pekerjaan yang memblokir thread (loop berat, query database sinkron, operasi file besar), siklus berikutnya terlambat, dan FXServer mencatat keterlambatan itu sebagai hitch warning lengkap dengan durasinya.

Ada beberapa variasi pesan, misalnya hitch pada server thread atau network thread. Yang paling sering terkait script adalah server thread. Angka milidetik di pesan menunjukkan seberapa lama thread tertahan.

Kapan hitch warning boleh diabaikan?

  • Saat server baru start. Memuat banyak resource, membangun cache, dan koneksi awal database sering memicu beberapa hitch. Ini normal selama berhenti setelah server stabil.
  • Saat restart resource besar secara manual.
  • Sesekali, dengan angka kecil, tanpa keluhan pemain.

Yang perlu ditindaklanjuti: hitch yang berulang saat server sudah berjalan, terutama yang muncul berpola (setiap beberapa detik, setiap ada pemain join, saat event tertentu) atau dengan angka besar.

Penyebab umum hitch warning

1. Loop server-side tanpa jeda yang cukup

Thread server yang memakai Wait(0) akan berjalan setiap tick. Kalau isinya berat (looping semua pemain, menghitung jarak, membaca database), biayanya menumpuk.

-- Buruk: berjalan setiap tick di server
CreateThread(function()
    while true do
        for _, src in ipairs(GetPlayers()) do
            -- logika berat untuk setiap pemain
        end
        Wait(0)
    end
end)

-- Lebih baik: jalankan sesuai kebutuhan sebenarnya
CreateThread(function()
    while true do
        for _, src in ipairs(GetPlayers()) do
            -- logika yang cukup dicek tiap beberapa detik
        end
        Wait(5000)
    end
end)

Lebih baik lagi: ganti polling dengan event. Kalau sesuatu hanya perlu terjadi saat pemain melakukan aksi, picu dengan event, bukan loop.

2. Query database yang memblokir

Query yang lambat (tanpa index, mengambil seluruh tabel, dijalankan dalam loop) bisa membuat script menunggu lama. Dengan oxmysql, pakai pola async dan hindari memanggil query di dalam loop untuk banyak pemain sekaligus.

-- Hindari: satu query per pemain di dalam loop
for _, src in ipairs(GetPlayers()) do
    local row = MySQL.single.await('SELECT * FROM players WHERE citizenid = ?', { getCid(src) })
end

-- Lebih baik: ambil sekali saat pemain load, simpan di cache
local cache = {}

AddEventHandler('playerDropped', function()
    cache[source] = nil
end)

local function loadPlayer(src, cid)
    MySQL.single('SELECT money FROM players WHERE citizenid = ?', { cid }, function(row)
        cache[src] = row
    end)
end

Tambahkan index pada kolom yang sering dipakai di WHERE, misalnya citizenid atau identifier. Cek juga ukuran tabel log yang tidak pernah dibersihkan.

3. Resource yang bocor memori atau menumpuk data

Tabel Lua yang terus bertambah tanpa dibersihkan (misalnya menyimpan data setiap pemain yang pernah join) membuat operasi semakin lambat dan memicu garbage collection yang berat.

4. Operasi file dan logging berlebihan

Menulis log ke file atau mengirim webhook Discord untuk setiap aksi kecil bisa membebani server. Batasi log ke kejadian penting, dan kirim webhook secara terkumpul.

5. Masalah di level hardware atau host

Kalau script kamu sudah rapi tapi hitch tetap muncul secara acak, cek infrastruktur:

  • CPU steal: di VPS yang padat, CPU kamu bisa "dipinjam" tenant lain. Cek kolom st di top. Angka steal yang tinggi dan sering adalah tanda host overcommit.
  • Single-core lemah: thread utama bergantung pada performa satu core.
  • I/O disk lambat: cek wa (I/O wait) di top, terutama saat backup berjalan.
  • RAM penuh: kalau swap terpakai, semua menjadi lambat.
# Lihat CPU steal (st) dan I/O wait (wa)
top
# Statistik per core setiap 2 detik (paket sysstat)
mpstat -P ALL 2
# Cek swap
free -h

Cara mencari resource penyebab hitch

Jangan menebak. Ukur.

  1. Catat polanya. Kapan hitch muncul? Saat jam ramai, saat pemain join, atau setiap interval tertentu? Pola interval tetap biasanya menunjuk ke loop atau timer di satu resource.
  2. Pakai profiler server. FiveM punya profiler bawaan yang merekam aktivitas resource per tick. Jalankan perekaman di console server saat hitch sedang terjadi, lalu analisis hasilnya. Langkah lengkapnya ada di panduan resmon dan profiler FiveM dan dokumentasi resmi profiler.
  3. Cek txAdmin. Panel txAdmin menampilkan grafik performa server yang membantu melihat kapan lonjakan terjadi.
  4. Isolasi. Di server staging, matikan resource satu per satu (atau per kelompok) sampai hitch hilang. Cara ini lambat tapi pasti.
  5. Cek resource yang baru ditambahkan. Kalau hitch mulai muncul setelah update, mulailah dari resource yang berubah.

Checklist perbaikan

  • Ganti loop Wait(0) di server dengan interval yang masuk akal atau event.
  • Pindahkan perhitungan yang tidak perlu dari server ke client jika aman (bukan logika yang menyangkut uang, item, atau keamanan).
  • Tambahkan index database dan bersihkan tabel log lama.
  • Cache data yang sering dibaca tapi jarang berubah.
  • Hapus resource yang tidak dipakai. Setiap resource yang di-ensure tetap memakan resource.
  • Update framework dan library (misalnya ox_lib, oxmysql) ke versi stabil terbaru.
  • Update FXServer ke artifact yang ditandai recommended.
  • Jadwalkan backup di luar jam ramai.
  • Kalau semua sudah dilakukan dan steal/I/O wait tetap tinggi, pertimbangkan pindah ke server dengan core khusus.

Untuk optimasi menyeluruh di luar hitch warning, lihat cara optimasi server FiveM agar tidak lag. Untuk menentukan kebutuhan hardware, baca berapa RAM dan CPU untuk server FiveM.

Kapan masalahnya ada di hosting?

Indikasinya: hitch muncul acak tanpa pola yang terkait aktivitas pemain, terjadi bahkan saat server sepi, profiler tidak menunjukkan satu resource yang jelas mahal, dan top menunjukkan CPU steal yang sering tinggi. Dalam situasi ini, mengoptimasi script tidak akan banyak membantu. Yang kamu butuhkan adalah CPU yang konsisten.

Perbedaan VPS biasa, VDS, dan dedicated dibahas di VPS vs VDS vs dedicated server untuk FiveM.

FAQ hitch warning FiveM

Apakah hitch warning bisa merusak server atau data?

Hitch warning sendiri hanya peringatan. Tapi hitch yang panjang dan sering bisa membuat pemain timeout, transaksi terasa gagal di sisi pemain, dan sinkronisasi entity kacau. Penyebabnya, misalnya resource yang macet atau RAM penuh, bisa berujung pada crash. Jadi tetap perlu ditangani.

Berapa angka hitch yang dianggap parah?

Tidak ada batas resmi yang berlaku untuk semua server. Yang lebih berguna adalah frekuensi dan pola. Satu hitch sesekali saat start tidak masalah. Hitch yang muncul berulang kali setiap menit saat jam ramai perlu diinvestigasi, berapa pun angkanya.

Apakah menambah RAM bisa menghilangkan hitch?

Hanya kalau penyebabnya memang kekurangan RAM (swap terpakai). Kalau penyebabnya script yang memblokir thread utama, menambah RAM tidak membantu. Ukur dulu dengan profiler dan free -h sebelum memutuskan upgrade.

Kenapa hitch muncul tepat setelah restart terjadwal?

Setelah restart, semua resource dimuat ulang dan banyak pemain join bersamaan, sehingga beban di menit-menit awal lebih tinggi. Hitch singkat di periode ini relatif wajar. Kalau berlangsung lama, cek resource yang melakukan pekerjaan berat saat start atau saat pemain load.

Core khusus untuk thread utama yang stabil

vDedicated Noctis Cloud memakai core AMD Ryzen khusus (tidak dibagi dengan tenant lain), RAM DDR5, dan NVMe di Singapore, di jaringan Noctis sendiri (AS202118) dengan anti-DDoS aktif. Kami juga menjalankan server roleplay QBCore kami sendiri di platform ini, jadi masalah performa FiveM adalah hal yang kami tangani sehari-hari. Root penuh, self-managed, dan engineer kami membantu untuk masalah di level server dan jaringan.

Lihat paket di Hosting FiveM Indonesia atau Noctis Cloud.

start here

Building something with Noctis?

Tell us what you need. A real person on our team reads every message.