วิธีลด FiveM Server Lag ให้ Server ลื่นขึ้น

วิธีลด FiveM Server Lag ที่ได้ผลจริงต้องเริ่มจากหาว่า Server ช้าที่ CPU, Script, Database, Network, RAM, Entity หรือ Client ก่อน แล้วค่อยแก้ Bottleneck ตัวนั้น ไม่ใช่เพิ่ม RAM ล้าง Cache หรือ Restart Server แบบสุ่ม

ถ้า FiveM Server มีอาการ

  • ใช้ Item แล้วหน่วง

  • Inventory เปิดช้า

  • Garage โหลดช้า

  • รถ Spawn ช้า

  • ผู้เล่นวาร์ปหรือกระตุก

  • Voice ขาด

  • Console ขึ้น Hitch Warning

  • CPU สูง

  • RAM เพิ่มไม่หยุด

  • ผู้เล่นเพิ่มแล้ว Server เริ่มช้า

ควรใช้หลัก

วัดปัญหา
↓
หา Bottleneck
↓
หา Resource ต้นเหตุ
↓
แก้ Code / SQL / Network / Entity
↓
Load Test
↓
วัดผลอีกครั้ง

Cfx.re ระบุว่า Hitch Warning สามารถเกิดจาก Resource ที่ทำงานไม่มีประสิทธิภาพ รวมถึง SQL Query ที่ใช้เวลานานและ Loop ที่ทำให้ Script Execution ติดขัด และแนะนำให้ใช้ Profiler ตรวจหาต้นเหตุโดยตรง

บทความนี้จาก comsiam จะไล่แก้ FiveM Server Lag แบบเป็นขั้นตอน เพื่อให้สามารถแยกได้ว่า Lag มาจากอะไรและควรแก้ตรงไหนก่อน

① ก่อนแก้ ต้องรู้ก่อนว่า FiveM Lag แบบไหน

FiveM Lag ไม่ได้มีสาเหตุเดียว

แบ่งคร่าว ๆ ได้เป็น

Server Lag

Server ประมวลผลช้า

Client Lag

FPS เครื่องผู้เล่นต่ำ

Network Lag

Ping หรือ Packet Loss สูง

Database Lag

SQL Query ช้า

Streaming Lag

รถ Map MLO หรือ Texture โหลดหนัก

ถ้าวิเคราะห์ผิดประเภท ต่อให้ Optimize หลายชั่วโมงก็อาจไม่ช่วย

② Server Lag มีอาการอย่างไร?

อาการที่พบบ่อย เช่น

  • Inventory ตอบสนองช้า

  • เงินเข้าช้า

  • ซื้อของแล้วต้องรอ

  • Garage เปิดช้า

  • Job Event หน่วง

  • รถ Spawn ช้า

  • ผู้เล่นหลายคนรู้สึกหน่วงพร้อมกัน

  • Console มี Hitch Warning

ถ้าผู้เล่นเกือบทุกคนเป็นพร้อมกัน ให้ตรวจ Server-side ก่อน

③ FPS ต่ำไม่เท่ากับ Server Lag

ถ้าผู้เล่นคนหนึ่งมี

FPS 25
Ping 25 ms

แต่คนอื่นเล่นปกติ

ปัญหาอาจมาจาก

  • PC

  • GPU

  • Map

  • Vehicle

  • Client Resource

  • NUI

ไม่ใช่ FXServer

④ Ping สูงไม่เท่ากับ Script Lag

Ping เกี่ยวข้องกับ Network Round-trip Time

เส้นทางคือ

Player
↓
ISP
↓
Internet
↓
Datacenter
↓
FiveM Server

Script Optimization ไม่สามารถลดระยะทางทางภูมิศาสตร์ได้

⑤ Packet Loss ต้องแยกจาก Ping

ผู้เล่นอาจมี Ping เพียง 30 ms แต่ Packet Loss สูง

อาการอาจเป็น

  • รถวาร์ป

  • เสียงขาด

  • ผู้เล่นกระตุก

  • Action ไม่ Sync

  • Entity แปลก

บน Client สามารถใช้ Performance Display เพื่อตรวจทั้ง Ping และ Packet Loss เพิ่มเติมได้

⑥ อย่าเริ่มจาก Restart Server

Restart สามารถทำให้ Server กลับมาลื่นชั่วคราว เพราะ

  • RAM ถูก Reset

  • Entity ถูกล้าง

  • Cache บางส่วนหาย

  • Resource State เริ่มใหม่

แต่ถ้า Root Cause ยังอยู่ ปัญหาจะกลับมาอีก

⑦ Restart แล้วลื่นขึ้นมากบอกอะไรได้?

เป็นเบาะแสว่าควรตรวจ

  • Memory Leak

  • Entity Leak

  • Cache สะสม

  • Resource State

  • Connection Leak

โดยเฉพาะถ้า Server ค่อย ๆ ช้าลงหลังเปิดหลายชั่วโมง

⑧ เก็บ Baseline ก่อนแก้

บันทึกอย่างน้อย

Players:
CPU:
RAM:
Server Tick:
Entity Count:
Database Latency:
Network:

ตัวอย่าง

Players: 120
CPU: 65%
RAM: 9.2 GB
Hitch: มี
Entities: 7,800

หลังแก้จึงเปรียบเทียบได้จริง

⑨ ตรวจ Console เป็นอันดับแรก

มองหา

  • Hitch Warning

  • Script Error

  • SQL Warning

  • Resource Restart

  • Timeout

  • Repeated Error

Error ที่เกิดหลายร้อยครั้งต่อนาทีสามารถสร้าง Load ได้เอง

⑩ Hitch Warning คือสัญญาณสำคัญ

Cfx.re อธิบายว่า Hitch Warning หมายถึง Resource บางตัวทำงานใช้เวลานานผิดปกติ

ตัวอย่างสาเหตุคือ

  • Slow SQL

  • Unoptimized Loop

  • Script Execution ที่ใช้เวลานาน

จึงไม่ควรมองข้าม Hitch Warning ที่เกิดซ้ำ ๆ

⑪ ใช้ Profiler หา Resource ตัวปัญหา

แทนที่จะเดาว่า

“น่าจะ Inventory”

หรือ

“น่าจะ Framework”

ให้ใช้ FiveM Profiler

Profiler สามารถใช้ได้ทั้ง Server และ Client เพื่อดูว่า Resource หรือ Thread ใดทำงานช้า

⑫ เริ่ม Profiler อย่างไร?

จาก Server Console ใช้

profiler record 500

จากนั้นรอให้ Capture เสร็จ

สามารถตรวจสถานะด้วย

profiler status

แล้วนำ Profile ไปวิเคราะห์

⑬ Profiler ช่วยหาได้ลึกแค่ไหน?

สามารถช่วยระบุ

Resource
↓
Thread
↓
File
↓
Code ที่ใช้เวลามาก

เอกสาร Profiler แสดงตัวอย่างการเจาะจาก CPU Spike ไปถึง Resource Tick และบรรทัด Code ที่มีปัญหาได้

⑭ CPU สูงต้องดู Spike ไม่ใช่ค่าเฉลี่ยอย่างเดียว

สมมติ CPU เฉลี่ย

35%

ดูเหมือนปกติ

แต่ทุก 5 วินาที Resource หนึ่งใช้เวลานานมาก

ผู้เล่นอาจรู้สึก

ลื่น
ลื่น
กระตุก
ลื่น
ลื่น
กระตุก

Profiler จะช่วยเห็น Spike แบบนี้

⑮ FiveM Enhanced ใช้ Profiler ใหม่

Enhanced เปลี่ยน Profiler Backend ไปใช้ Perfetto

Command หลักยังคงแนวคิดเดิม เช่น

profiler record <duration>
profiler save <filename>.json

แล้วเปิด Trace เพื่อวิเคราะห์ Timeline ได้ละเอียดขึ้น

⑯ อย่า Optimize ทุก Resource พร้อมกัน

สมมติ Server มี Resource A–Z

Profiler ชี้ว่า Resource H มี Spike สูง

เริ่มจาก H ก่อน

ไม่จำเป็นต้อง Rewrite Framework ทั้งชุด

⑰ Loop เป็นสาเหตุ Lag ที่พบบ่อยมาก

ตัวอย่าง

while true do
    Wait(0)

    -- งานหนัก
end

โค้ดภายในจะทำงานถี่มาก

ถ้าข้างในมี

  • Player Loop

  • Entity Scan

  • Distance Calculation

  • Database

  • Event

จะยิ่งหนัก

⑱ Wait(0) ไม่ได้ผิดเสมอ

บางสิ่งจำเป็นต้องทำทุก Frame เช่น

  • Input

  • Draw

  • Context Interaction บางประเภท

ปัญหาคือใช้ Wait(0) กับงานที่ไม่ต้องทำทุก Frame

⑲ เปลี่ยน Polling ให้ช้าลงเมื่อทำได้

จาก

while true do
    Wait(0)
    CheckSomething()
end

อาจเปลี่ยนเป็น

while true do
    Wait(500)
    CheckSomething()
end

ถ้า Feature ไม่ต้องตอบสนองระดับ Frame

ลดจำนวน Execution ลงมหาศาล

⑳ ใช้ Adaptive Sleep

ตัวอย่าง

Player อยู่ไกลร้าน
→ Wait 1000

Player เข้าใกล้
→ Wait 250

Player อยู่จุด Interaction
→ Wait 0

ทำให้ Resource Responsive เฉพาะเวลาจำเป็น

㉑ อย่า Loop Player ทั้ง Server ทุก Tick

ตัวอย่าง

for _, player in ipairs(GetPlayers()) do
    -- ทำบางอย่าง
end

ถ้าทำทุก 5 วินาทีอาจไม่มีปัญหา

แต่ถ้าทำทุก Tick กับผู้เล่น 500 คน Cost จะสูงขึ้นมาก

㉒ ระวัง O(n²)

สมมติ Script ทำ

Player ทุกคน
×
Player ทุกคน

จำนวน Comparison จะเพิ่มเร็วมาก

PlayersComparisons โดยประมาณ
502,500
10010,000
500250,000
1,0001,000,000

ถ้าทำซ้ำถี่ Server สามารถ Lag ได้รุนแรง

㉓ ใช้ Event แทน Polling เมื่อเหมาะสม

แทน

ทุก 1 วินาที
→ เช็คว่าผู้เล่นเปลี่ยน Job หรือยัง

ใช้

Job เปลี่ยน
→ Trigger Event
→ Update

ลดงานที่เกิดขึ้นทั้งที่ไม่มีข้อมูลเปลี่ยน

㉔ Database เป็นตัวการใหญ่ของ Server Lag

SQL Query ที่ช้าสามารถสร้าง Hitch ได้โดยตรงตามตัวอย่างในเอกสาร Cfx.re

ตรวจ Resource ที่เกี่ยวกับ

  • Inventory

  • Garage

  • Phone

  • Housing

  • Banking

  • Characters

เป็นพิเศษ

㉕ หลีกเลี่ยง Query ใน Loop

ตัวอย่างที่อันตราย

Player 200 คน
×
5 Queries
=
1,000 Queries

ต่อหนึ่งรอบ

ถ้าทำทุกไม่กี่วินาที Database จะถูกกดหนักมาก

㉖ Query ข้อมูลเท่าที่ต้องใช้

แทน

SELECT * FROM users

หากต้องการเพียงบาง Field ใช้แนวคิด

SELECT identifier, money, job
FROM users

ลดข้อมูลที่ Database ต้องส่งและ Application ต้องจัดการ

㉗ ทำ Index ให้ Query สำคัญ

Column ที่มักใช้ค้นหา เช่น

identifier
citizenid
plate
owner

ควรตรวจ Execution Pattern และ Index

โดยเฉพาะ Table ที่มีข้อมูลจำนวนมาก

㉘ Index เยอะที่สุดไม่ได้ดีที่สุด

Index ช่วย Read แต่มี Cost ตอน

  • INSERT

  • UPDATE

  • DELETE

จึงต้องสร้างตาม Query จริง

ไม่ใช่สร้าง Index ทุก Column

㉙ Query ซ้ำควรพิจารณา Cache

ข้อมูล Static เช่น

  • Item Definitions

  • Job Config

  • Vehicle Config

ไม่จำเป็นต้องอ่าน Database ใหม่ทุก Interaction

Cache สามารถลด Query จำนวนมากได้

㉚ แต่ Cache ต้องมี Lifecycle

ทุก Cache ควรตอบได้ว่า

  • สร้างเมื่อไร

  • Update เมื่อไร

  • Expire เมื่อไร

  • ลบเมื่อไร

ไม่อย่างนั้น Cache อาจกลายเป็น Memory Leak

㉛ RAM เพิ่มขึ้นเรื่อย ๆ ต้องสงสัย Memory Leak

ตัวอย่าง

หลัง Restart → 3 GB
6 ชั่วโมง → 5 GB
12 ชั่วโมง → 8 GB
24 ชั่วโมง → 13 GB

ถ้า Workload ใกล้เคียงกัน นี่เป็น Pattern ที่ควรตรวจ

㉜ Player Cache ต้อง Cleanup

Resource อาจเก็บ

Players[source] = data

เมื่อ Player ออกต้องล้าง Entry ที่ไม่ใช้แล้ว

ไม่เช่นนั้น Server เปิดนานเท่าไร Memory ก็อาจสะสม

㉝ JavaScript Resource ก็ Leak ได้

ตัวอย่าง

const players = new Map();

ถ้าไม่

players.delete(id);

ตอน Player ออก ก็สามารถสะสมข้อมูลเช่นกัน

㉞ Entity Leak เป็นปัญหาร้ายแรง

Resource สร้าง

  • Vehicle

  • Ped

  • Object

แล้วไม่ Delete

จำนวน Entity จะค่อย ๆ เพิ่ม

เช่น

เริ่ม Server → 2,000
6 ชั่วโมง → 5,000
12 ชั่วโมง → 12,000

ควรตรวจทันที

㉟ ทุก Entity ต้องมี Cleanup Plan

ถามว่า

ใครสร้าง?
ใช้ทำอะไร?
หมดอายุเมื่อไร?
ใครลบ?
Player Disconnect แล้วลบไหม?
Resource Stop แล้วลบไหม?

ถ้าตอบไม่ได้ Resource มีความเสี่ยง

㊱ Mission Vehicle ควร Cleanup

เช่นรถ Job

เมื่อ

  • Mission จบ

  • Player ออก

  • Resource Restart

ควรมี Logic จัดการ Entity ตามที่ Gameplay ต้องการ

อย่าปล่อยรถสร้างสะสมทุกครั้งที่รับงาน

㊲ Props ก็ทำ Server หนักได้

Object เล็ก ๆ หลายพันตัวก็เป็น Entity

เช่น

  • Boxes

  • Cones

  • Chairs

  • Job Props

Resource ต้อง Cleanup เช่นเดียวกับรถ

㊳ Network Event Spam ต้องหยุด

ตัวอย่าง Client ทำ

while true do
    Wait(0)
    TriggerServerEvent('updateData', data)
end

ผู้เล่น 100 คนสามารถสร้าง Event จำนวนมหาศาล

ควรส่งเฉพาะเมื่อ Data เปลี่ยนและ Serverจำเป็นต้องรู้

㊴ Broadcast Event ให้ทุกคนเท่าที่จำเป็น

แทนส่ง

Server
→ Players ทุกคน

ทุกครั้ง

ให้พิจารณาว่า

  • เฉพาะ Player หนึ่งคน?

  • Job เดียวกัน?

  • Player ใกล้เคียง?

  • Routing Bucket เดียวกัน?

ต้องได้รับข้อมูลหรือไม่

㊵ Payload ใหญ่เกินไปก็ทำให้ Lag

อย่าส่ง Table ขนาดใหญ่มากซ้ำ ๆ หาก Client ต้องการข้อมูลเพียงบางส่วน

ตัวอย่าง Inventory 500 รายการไม่ควรถูกส่งใหม่ทั้งหมดทุกครั้งที่ Item จำนวนหนึ่งเปลี่ยน ถ้าระบบสามารถออกแบบ Delta Update ได้

㊶ State Bags ช่วยลด Event Spam ได้ในบางกรณี

เหมาะกับ State เช่น

  • Vehicle Lock

  • Duty

  • Entity Status

  • Door

แต่ต้องใช้ตาม Replication Intent

ไม่ใช่ย้าย Event Spam ไปเป็น State Bag Spamแทน

㊷ อย่า Set State Bags ทุก Frame

เช่น

fuel = 70.001
fuel = 70.002
fuel = 70.003

ไม่จำเป็นต้องส่งทุก Frame

ใช้ Threshold หรือ Interval ที่เหมาะสม

㊸ OneSync Scope สำคัญ

อย่าบังคับให้ Client ทุกคนรู้ Entity ทั้ง Server ถ้าไม่จำเป็น

OneSync ถูกออกแบบให้ใช้ Culling ลดข้อมูลที่ Client ต้องรับ

Resource ควรทำงานสอดคล้องกับ Scope Architecture

㊹ อย่าเพิ่ม Culling Distance แบบสุ่ม

การเพิ่ม Scope เพื่อแก้ Script ที่เขียนผิดอาจทำให้

  • Entity มากขึ้น

  • Network มากขึ้น

  • Client CPU สูงขึ้น

แก้ Resource ให้ใช้ Server-side Data เมื่อเป็น Global Logic จะดีกว่า

㊺ Scoreboard Global ควรใช้ Server Data

อย่า Loop Local Player Entities เพื่อสร้างรายชื่อผู้เล่นทั้งหมด

ให้

Server Player List
↓
ข้อมูลที่จำเป็น
↓
Client Scoreboard

เหมาะกับ OneSync มากกว่า

㊻ Police GPS ก็เช่นกัน

ตำรวจอยู่คนละเมืองอาจไม่ได้มี Local Player Entity อยู่ใน Scope

ให้ Server Sync Position Data ที่จำเป็นสำหรับ Authorized Players

ไม่ต้อง Force Entity Visibility

㊼ Client FPS ต่ำให้เปิด Resmon

Cfx.re ระบุว่า Resource Monitor ใช้ตรวจ CPU Time และ Memory Usage ของ Resource ฝั่ง Client และเปิดด้วย

resmon true

เหมาะสำหรับหา Client Resource ที่ทำงานหนัก

㊽ Resmon สูงต้องดูตอน Feature ทำงานจริง

ตัวอย่าง Phone

อย่าดู Resmon ตอน Phone ปิดเพียงอย่างเดียว

ลอง

  • เปิด Phone

  • Scroll

  • เปิด Gallery

  • โทร

  • ส่งข้อความ

แล้วดู Resource Usage

㊾ HUD เป็นตัวทำ FPS ตกได้

HUD อาจ Update

  • Health

  • Armor

  • Money

  • Job

  • Speed

  • Voice

ทุก Frameโดยไม่จำเป็น

ข้อมูลที่ไม่ได้เปลี่ยนไม่ควรถูกส่งเข้า NUI ซ้ำ ๆ

㊿ NUI สามารถทำเครื่องผู้เล่นหนักมาก

โดยเฉพาะ UI ที่มี

  • Animation มาก

  • DOM จำนวนมาก

  • JavaScript Loop

  • Image ใหญ่

  • Memory Leak

Server ลื่นแต่ Client FPS ต่ำอาจเป็น NUI Problem

51. รถ High-poly ทำให้กระตุก

รถ Custom ที่หนักสามารถเพิ่ม

  • GPU Load

  • VRAM

  • Streaming

  • Client Memory

โดยเฉพาะเมื่อมีรถหลายคันอยู่ในจุดเดียวกัน

นี่เป็น Client/Asset Optimization ไม่ใช่ Server Script อย่างเดียว

52. Texture 4K จำนวนมากต้องระวัง

การมี YTD ขนาดใหญ่มากในรถจำนวนหลายร้อยคันสามารถทำให้

  • VRAM เต็ม

  • Texture Loss

  • Stutter

  • Crash

ลด Texture ตามคุณภาพที่จำเป็นจริง

53. MLO หนักทำให้ FPS ดรอปเฉพาะพื้นที่ได้

ถ้าผู้เล่นรายงาน

“เข้าโรงพยาบาลแล้ว FPS จาก 100 เหลือ 35”

ให้ตรวจ

  • MLO

  • Polygon

  • Texture

  • Collision

  • LOD

  • Scripts ในพื้นที่

ไม่ใช่ Restart Server

54. LOD สำคัญกับ Map และรถ

Asset ที่ไม่มี LOD ที่เหมาะสมอาจ Render Model Detail สูงจากระยะไกลเกินไป

เมื่อมี Asset จำนวนมาก Performance จะลดอย่างชัดเจน

55. Asset Conversion ไม่ใช่ Asset Optimization

ถ้าใช้ FiveM Enhanced และ Alchemist Convert Asset สำเร็จ

ไม่ได้หมายความว่า Asset เบาลง

Legacy High-poly
↓
Conversion
↓
Enhanced High-poly

ยังต้อง Optimize Geometry/Texture แยก

56. Resource เยอะไม่ได้แปลว่า Lag

Server มี 300 Resources อาจลื่นได้ถ้า Resource ทำงานดี

Serverมี 50 Resourcesก็อาจ Lag ถ้ามี Script หนึ่งตัวทำ Heavy Loop

ดู Performance ไม่ใช่จำนวน Folder

57. Resource ที่ไม่ได้ใช้ควรปิด

ตรวจ server.cfg

ลบหรือ Disable

  • Test Script

  • Duplicate Script

  • Old Jobs

  • Unused Maps

  • Abandoned Systems

ลดทั้ง Load และ Complexity

58. Script ซ้ำหน้าที่กันต้องตรวจ

ตัวอย่าง

Traffic Script A
Density Script B
NPC Controller C

ทั้งหมดอาจแก้ NPC Density ทุก Frame

ผลคือทั้ง Conflict และเสีย CPU

เลือก System ที่จำเป็นจริง

59. Error Spam กิน Performance ได้

Resource ที่ Print Error หลายครั้งต่อ Frame สามารถสร้าง

  • Console I/O

  • Log ใหญ่

  • CPU/Disk Work

แก้ Root Error แทนปล่อยให้ Console วิ่งแดงตลอดเวลา

60. Debug Print ควรปิดใน Production

เช่น

print(json.encode(bigData))

ทุก Tick

ไม่ควรอยู่ Production

ใช้ Debug Mode ที่เปิดเมื่อ Developer ต้องการ

61. Server Artifact เก่าควรอัปเดต

Cfx.re ระบุว่า Server Artifact ที่เข้าสู่ EOS/EOL จะไม่ได้รับระดับการสนับสนุนและความเสถียรเช่น Build ปัจจุบัน ดังนั้น Server Owner ควรรักษา Artifact ให้อยู่ในรุ่นที่รองรับ

แต่ควร Update ผ่าน Staging ก่อน Production

62. อย่า Update Production โดยไม่มี Backup

ใช้

Backup
↓
Staging
↓
Update
↓
Test
↓
Production

โดยเฉพาะ

  • Framework

  • Inventory

  • Database Resource

  • Server Artifact

63. txAdmin ช่วยตรวจ Server ได้

txAdmin มี Monitoring สำหรับ

  • CPU/RAM

  • Server Threads

  • Player Count

  • Live Console

จึงช่วยดู Pattern ของ Server Operation ได้ แม้ไม่ได้ Optimize Script ให้อัตโนมัติ

64. CPU สูงตอน Player เพิ่มต้องตรวจ Scaling

สมมติ

50 Players → CPU 25%
100 Players → CPU 40%
150 Players → CPU 80%

แสดงว่า Workload อาจ Scale ไม่ดีช่วงหนึ่ง

ใช้ Profiler ตอนมี Player Count สูง

ไม่ใช่ Profile ตอน Server ว่าง

65. ต้อง Profile ตอนเกิดปัญหา

Profiler ตอน 5 Players อาจไม่เจอ Resource ที่พังตอน 150 Players

Capture ตอน

  • Peak Hour

  • Event

  • Player Count สูง

  • Hitch เกิด

จะมีประโยชน์มากกว่า

66. Database ก็ต้องทดสอบตอน Peak

Slow Query อาจไม่ช้าตอน Table เล็กหรือ User น้อย

ปัญหาอาจเกิดเมื่อ

  • Concurrent Queries เพิ่ม

  • Locks เพิ่ม

  • Connections เพิ่ม

ดังนั้น Load Test Database ด้วย

67. Voice มีผลต่อความรู้สึก Lag

ถ้าเสียง

  • Delay

  • ขาด

  • Robot

ผู้เล่นอาจเรียกว่า Server Lag ทั้งที่สาเหตุเป็น Network/Voice

ต้องแยก Voice Troubleshooting ออกจาก Script Hitch

68. Datacenter อยู่ไกลแก้ด้วย Script ไม่ได้

ถ้าผู้เล่นหลักอยู่ไทยแต่ Server อยู่ไกลมาก

Ping Baseline อาจสูง

เลือก Region และ Routing ที่เหมาะกับ Community

สำคัญพอ ๆ กับ CPU

69. Packet Loss สำคัญกว่าการมี Bandwidth เยอะอย่างเดียว

Network 10 Gbps ที่ Packet Loss สูงยังให้ประสบการณ์แย่ได้

ดู

  • Stability

  • Routing

  • Packet Loss

  • DDoS Protection

ร่วมกับ Port Speed

70. Enhanced มี Metrics ช่วยหาปัญหาได้มากขึ้น

Cfx.re ระบุว่า Enhanced มี Prometheus-compatible Metrics มากกว่า 80 รายการ ครอบคลุม เช่น

  • UDP Packets

  • Peer Counts

  • OneSync Entities

  • State Bags

  • Routing Buckets

  • NetID Usage

  • JavaScript/Lua Memory

  • Event Loop Queues

  • Server Thread Tick Times

ทำให้หาความสัมพันธ์ระหว่าง Player Count กับ Server Load ได้ละเอียดขึ้น

71. เก็บ Metrics ระยะยาวดีกว่า Snapshot

ตัวอย่าง

18:00 → 80 Players → ปกติ
20:00 → 140 Players → Entity เพิ่ม
21:00 → 170 Players → svSync Tick สูง
22:00 → Hitch เริ่ม

ข้อมูลแบบนี้ช่วยหา Capacity Limit ได้จริง

72. ทำ Performance Budget ให้ Resource

กำหนดกฎ Development เช่น

  • ห้าม Query ทุก Frame

  • ห้าม Entity Scan ทั้งโลกโดยไม่มีเหตุผล

  • ต้อง Cleanup Entity

  • NUI Update เมื่อ Data เปลี่ยน

  • Resource สำคัญต้อง Profile ก่อน Merge

ช่วยป้องกัน Lag ก่อนขึ้น Production

73. Resource ใหม่ต้องผ่าน Staging

Workflow ที่ดีคือ

Development
↓
Staging
↓
Profiler
↓
Resmon
↓
Functional Test
↓
Load Test
↓
Production

อย่าติดตั้ง Resource ใหม่ลง Server ผู้เล่นจริงทันที

74. วิธีลด FiveM Server Lag แบบเร่งด่วน

หาก Server กำลัง Lag ให้ทำตามลำดับนี้

  1. ดู Player Count

  2. ดู CPU/RAM

  3. อ่าน Console

  4. หา Hitch Warning

  5. Capture Profiler

  6. ดู Resource ที่ Spike

  7. ตรวจ SQL ของ Resource นั้น

  8. ตรวจ Loop/Event

  9. ตรวจ Entity Count

  10. Disable Resource ต้องสงสัยบน Test Server

  11. Reproduce

  12. แก้และวัดซ้ำ

อย่าเริ่มจากลบ Cache

75. ถ้าปิด Resource แล้ว Lag หายทำอย่างไรต่อ?

อย่าจบด้วยการลบ Resourceทันทีถ้ายังต้องใช้

เปิด Source แล้วหา

  • Heavy Loop

  • Slow Query

  • Event Spam

  • Entity Leak

  • Memory Leak

จากนั้นแก้ Root Cause

76. ถ้ามี Resource ต้องสงสัยหลายตัว

ใช้ Binary Isolation

สมมติมี 20 Resources ในกลุ่ม Custom

  1. ปิด 10

  2. Test

  3. เลือกครึ่งที่มีปัญหา

  4. แบ่งอีกครึ่ง

  5. ทำซ้ำ

ช่วยจำกัด Resource ต้นเหตุได้เร็ว

77. อย่าปิด Core Resource บน Production แบบสุ่ม

Resource เช่น

  • Framework

  • Inventory

  • Database

  • Character

ถ้าปิดอาจทำให้ Data เสียหรือ Gameplay พัง

ทำ Diagnostic บน Staging/Test Server เมื่อเป็นไปได้

78. Hardware Upgrade ควรทำเมื่อไร?

เมื่อวัดแล้วพบว่า

Code/Database/Entities ถูก Optimize แล้ว แต่ Hardware ยังตันจริง

เช่น Main CPU Thread มี Load สูงจาก Workload ที่จำเป็น

จึงค่อยพิจารณา CPU ที่แรงกว่า

79. เพิ่ม RAM ควรทำเมื่อไร?

เมื่อ Server มี Memory Requirement จริงและ RAM ใกล้เต็ม

ไม่ใช่เพราะ CPU 100%

CPU Bottleneck กับ RAM Bottleneck เป็นคนละเรื่อง

80. NVMe ช่วยเรื่องอะไร?

ช่วยกับ

  • File I/O

  • Startup

  • Database I/O

  • Cache

แต่ Heavy Lua Loop ไม่ได้เร็วขึ้นมากเพียงเพราะเปลี่ยน SATA SSD เป็น NVMe

81. FiveM Server Lag Checklist

CPU

  • Profiler แล้ว

  • ไม่มี Heavy Loop

  • ไม่มี Resource Spike ต่อเนื่อง

RAM

  • Memory Stable

  • Player Cache Cleanup

  • ไม่มี Entity Leak

Database

  • ไม่มี Slow Query สำคัญ

  • Index เหมาะสม

  • ไม่มี Query Spam

Network

  • Ping ปกติ

  • Packet Loss ต่ำ

  • ไม่มี Event Spam

Entities

  • Vehicle Cleanup

  • Ped Cleanup

  • Object Cleanup

Client

  • Resmon ปกติ

  • NUI ไม่หนัก

  • Assets Optimize

Operations

  • Artifact รองรับ

  • Monitoring

  • Staging

  • Backup

82. สิ่งที่ไม่ควรทำเมื่อ Server Lag

หลีกเลี่ยง

  • ล้าง Cache ทุกครั้ง

  • Restart ทุกชั่วโมงเพื่อกลบปัญหา

  • ซื้อ RAM โดยไม่ตรวจ

  • เพิ่ม CPU โดยไม่ Profile

  • ลบ Resource แบบเดา

  • ใส่ Wait(0) ทุก Loop

  • Query SQL ใน Loop

  • TriggerServerEvent ทุก Frame

  • Broadcast Data ใหญ่ทุกคน

  • Spawn Entity โดยไม่ Cleanup

  • Update Production โดยไม่ Test

วิธีเหล่านี้มักแก้อาการมากกว่าต้นเหตุ

83. คำถามที่พบบ่อย

FiveM Server Lag แก้อย่างไร?

เริ่มจาก Console/Hitch Warning แล้วใช้ Profiler หา Resource ที่ใช้เวลามาก จากนั้นตรวจ Code, SQL, Events และ Entities

FiveM Hitch Warning คืออะไร?

เป็นสัญญาณว่า Resource หรือ Thread ใช้เวลาทำงานนานผิดปกติ

SQL ทำให้ FiveM Lag ได้ไหม?

ได้ และ Cfx.re ยก Slow SQL Query เป็นตัวอย่างหนึ่งของสาเหตุ Hitch

Resource เยอะทำให้ Server Lag ไหม?

ไม่จำเป็น Resource หนึ่งตัวที่เขียนไม่ดีก็สามารถหนักกว่า Resource จำนวนมากที่ Optimize ดี

RAM สูงแก้อย่างไร?

ตรวจ Memory Leak, Player Cache และ Entity Leak ก่อนเพิ่ม RAM

CPU สูงแก้อย่างไร?

ใช้ Profiler เพื่อหาว่า Resource/Thread ใดเป็นต้นเหตุ

FPS ต่ำใช้ Profiler หรือ Resmon?

เริ่มจาก Resmon สำหรับ Client Resources และใช้ Client Profilerเมื่อต้องเจาะลึก

Resmon เปิดอย่างไร?

resmon true

Restart ช่วยไหม?

ช่วยชั่วคราวในบางกรณี แต่ไม่ใช่การแก้ Root Cause

ล้าง Cache ช่วย Server Lag ไหม?

ไม่ใช่วิธีมาตรฐานสำหรับแก้ Script, SQL, CPU หรือ Entity Bottleneck

84. สรุปวิธีลด FiveM Server Lag ให้ Server ลื่นขึ้น

หลักสำคัญที่สุดคือ

FiveM Server Lag ต้องแก้ตาม Bottleneck จริง

ถ้า Console มี Hitch Warning ให้เริ่มจาก Profiler

ถ้า Resource ฝั่ง Client กินเครื่อง ให้ใช้ Resmon

ถ้า Inventory, Garage หรือ Character ตอบสนองช้า ให้ตรวจ Database

ถ้า RAM เพิ่มขึ้นทุกชั่วโมง ให้ตรวจ Memory Leak และ Entity Leak

ถ้าผู้เล่นกระตุกแต่ Server Tick ปกติ ให้ตรวจ Network และ Packet Loss

ถ้า FPS ต่ำเฉพาะพื้นที่ ให้ตรวจ Map, MLO, Vehicles และ Textures

และถ้า Server Lag เฉพาะเวลาผู้เล่นเยอะ ให้ตรวจ Resource ที่ Scale ตาม

Players + Entities + Events + Database

สำหรับ Enhanced มีเครื่องมือวิเคราะห์ละเอียดขึ้นอีก เพราะ Cfx.re เพิ่ม Perfetto Profiler และ Prometheus-compatible Metrics มากกว่า 80 รายการ ทำให้สามารถตรวจ OneSync Entities, State Bags, NetIDs, Memory, Network และ Thread Tick Times ได้จากข้อมูลจริง

แนวทางที่ comsiam แนะนำคือ

Console
↓
Profiler
↓
Resmon
↓
Database
↓
Events
↓
Entities
↓
Network
↓
Assets
↓
Load Test
↓
Measure Again

จำสั้น ๆ:

Hitch → Profiler

FPS ต่ำ → Resmon

SQL ช้า → Query + Index

CPU สูง → Resource/Loop

RAM เพิ่มไม่หยุด → Memory Leak

Entity เพิ่มไม่หยุด → Entity Leak

Ping/Packet Loss → Network

FPS ตกเฉพาะ Map → Asset Optimization

ผู้เล่นเพิ่มแล้ว Lag → Scaling Problem

FiveM Server ที่ลื่นจึงไม่ใช่ Server ที่ Restart บ่อยที่สุดหรือซื้อ Hardware แพงที่สุด แต่คือ Server ที่รู้ว่า Bottleneck อยู่ตรงไหน แก้ที่ Root Cause และทดสอบ Performance ก่อนนำ Resource ทุกตัวขึ้น Production

Comments

Popular posts from this blog

FiveM ยังน่าเล่นไหม? Enhanced เปลี่ยน FiveM แค่ไหน

FiveM คืออะไร เล่นอย่างไร สำหรับมือใหม่ เริ่มต้นตั้งแต่ศูนย์

วิธีตั้ง Admin Permission ด้วย add_ace และ add_principal FiveM แบบละเอียด