ระบุปัญหาด้านประสิทธิภาพ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

การระบุปัญหาด้านประสิทธิภาพโดยทั่วไปหมายถึงการเจาะลึกลงไปในหนึ่งในสามหมวดหมู่: อัตราเฟรม (การคำนวณ), หน่วยความจำ หรือเวลาโหลด

Roblox มีเครื่องมือหลายอย่างสำหรับการระบุปัญหาด้านประสิทธิภาพ ซึ่งบางอย่างสามารถใช้ได้ในไคลเอนต์ Roblox (และดังนั้นจึงสามารถใช้ใน Studio) และบางอย่างสามารถใช้ได้เฉพาะใน Studio เท่านั้น ในขณะที่คุณสามารถสังเกตพฤติกรรมของไคลเอนต์ได้โดยตรง คุณต้องใช้เครื่องมือในการวินิจฉัยปัญหาที่เกิดขึ้นกับเซิร์ฟเวอร์

เครื่องมือวินิจฉัย

เครื่องมือคำอธิบายตำแหน่งทางลัดคีย์บอร์ดสภาพแวดล้อม
Developer Consoleคอนโซลที่มีข้อความบันทึกแบบเรียลไทม์ ข้อผิดพลาด และข้อมูลรายละเอียดเกี่ยวกับหน่วยความจำ เครือข่าย และประสิทธิภาพของสคริปต์ มีประโยชน์สำหรับการดูการใช้หน่วยความจำ สถิติสุขภาพของเซิร์ฟเวอร์หลัก สถิติประสิทธิภาพของสคริปต์ และเพื่อเปิด MicroProfiler ของไคลเอนต์หรือเซิร์ฟเวอร์
Studio

In-Game
F9
Studio Testing

Live Sessions
MicroProfilerเครื่องมือการดีบักที่แยกแยะว่าใช้เวลาในการคำนวณมากแค่ไหนในแต่ละเฟรม มันสามารถสร้างข้อมูลสำหรับการวิเคราะห์ที่แสดงการแยกแยะที่แม่นยำของเฟรมแต่ละเฟรม ทำให้มีประโยชน์ในการระบุงานเฉพาะที่ทำให้เกิดปัญหาด้านประสิทธิภาพ คุณสามารถเรียกใช้โปรไฟเลอร์ได้ทั้งในไคลเอนต์หรือเซิร์ฟเวอร์ ขึ้นอยู่กับว่าฝั่งไหนมีปัญหา
Studio

In-Game
CtrlAltF6 (⌘⌥F6)
Studio Testing

Live Sessions
Scene Analysisให้ข้อมูลเปรียบเทียบในมุมมองเกี่ยวกับทรัพยากรที่ฉากของไคลเอนต์และเซิร์ฟเวอร์ของคุณกำลังใช้และตัวอย่างใดที่รับผิดชอบต่อการใช้ทรัพยากรนั้นStudioN/A
Studio Testing
Performance Statsแถบเครื่องมือที่มีสถิติประสิทธิภาพพื้นฐาน รวมถึงการใช้หน่วยความจำ CPU GPU ข้อมูลเครือข่ายที่ส่งและรับ และเวลา ping
In-Game
CtrlAltF7 (⌘⌥F7)
Studio Testing

Live Sessions
Debug Statsแสดงข้อมูลรายละเอียดเกี่ยวกับกราฟิก ฟิสิกส์ การจราจรเครือข่าย และ FPS
Studio

In-Game
ShiftCtrlF1 (Shift⌘F1), ShiftCtrlF2 (Shift⌘F2), ShiftCtrlF3 (Shift⌘F3), ShiftCtrlF4 (Shift⌘F4), ShiftCtrlF5 (Shift⌘F5)
Studio Testing

Live Sessions
Network Simulationคุณสมบัติที่จำลองเงื่อนไขเครือข่ายในโลกแห่งความจริง เช่น ความล่าช้า การกระเพื่อม และการสูญหายของแพ็กเกจ เพื่อทดสอบการเชื่อมต่อ
Studio
AltS(⌥S)
Studio Testing
Performance Dashboardแดชบอร์ดที่มีกราฟรวมสำหรับการใช้หน่วยความจำของไคลเอนต์และเซิร์ฟเวอร์ อัตราเฟรมของไคลเอนต์ การเต้นของหัวใจของเซิร์ฟเวอร์ และอัตราการชนในเวลาจริง มีประโยชน์สำหรับการวิเคราะห์รูปแบบประสิทธิภาพเมื่อเวลาผ่านไป ดู การตรวจสอบประสิทธิภาพ
Creator Dashboard
N/A
Live Sessions

การคำนวณเซิร์ฟเวอร์

การเต้นของหัวใจของเซิร์ฟเวอร์ถูกจำกัดที่ 60 FPS สำหรับเกมทั้งหมด ดังนั้นค่าที่ต่ำกว่านั้นอาจบ่งบอกถึงปัญหาด้านประสิทธิภาพ เพื่อตรวจสอบการเต้นของหัวใจของเซิร์ฟเวอร์:

  • ด้วย Developer Console - ในแท็บ Server Jobs ขยายแถว Heartbeat และตรวจสอบค่าที่ Steps Per Sec ซึ่งแสดงถึงการเต้นของหัวใจของเกมของคุณ

  • ด้วย MicroProfiler คุณสามารถตรวจสอบกราฟเพื่อดูว่าเฟรมใช้เวลานานกว่า 16.67 ms หรือไม่

อีกหนึ่งอาการของการลดลงของการเต้นของหัวใจของเซิร์ฟเวอร์คือความล่าช้าที่เพิ่มขึ้น (ที่รู้จักกันทั่วไปว่าเป็น ping) ยิ่งเซิร์ฟเวอร์ใช้เวลานานในการเสร็จสิ้นการคำนวณงานในแต่ละเฟรมมากเท่าไหร่ ก็ยิ่งใช้เวลานานในการประมวลผลข้อมูลเครือข่ายที่ส่งและรับจากไคลเอนต์มากขึ้นเท่านั้น เพื่อตรวจสอบค่า ping เฉลี่ยสำหรับผู้เล่นทั้งหมดที่เชื่อมต่อกับเซิร์ฟเวอร์ ให้ไปที่แท็บ Server Stats ใน Developer Console

หากการเต้นของหัวใจของเซิร์ฟเวอร์ยังคงต่ำหลังจากที่คุณ ปรับปรุงประสิทธิภาพ เกมของคุณอาจต้องการ CPU มากกว่าที่เซิร์ฟเวอร์จะได้รับตามค่าเริ่มต้น คุณสามารถจองมากขึ้นได้ด้วย Extended Services for Compute

การคำนวณไคลเอนต์

การจำกัดอัตราเฟรมของไคลเอนต์เริ่มต้นอยู่ที่ 60 FPS อย่างไรก็ตาม ผู้ใช้สามารถเพิ่มขีดจำกัดอัตราเฟรมของตนได้สูงสุดถึง 240 FPS บน Windows

อัตราเฟรมจะแตกต่างกันอย่างมากระหว่างอุปกรณ์ ตัวอย่างเช่น PC ระดับสูงอาจสามารถ "บังคับ" ปัญหาการคำนวณและประสบกับการลดอัตราเฟรมที่ไม่สามารถรับรู้ได้ หากคุณ ทดสอบบนอุปกรณ์ระดับต่ำกว่า ปัญหามักจะรุนแรงกว่าจึงสังเกตเห็นได้ง่ายกว่า

เพื่อตรวจสอบอัตราเฟรมของเกมของคุณ:

  • ในไคลเอนต์ กด ShiftF5 เพื่อแสดงสรุปสถิติการดีบัก

  • จากเมนู Window ⟩ Performance ของ Studio เปิดใช้งาน Stats เพื่อเปิดใช้งานสถิติการดีบัก

  • ด้วย MicroProfiler คุณสามารถตรวจสอบกราฟเพื่อดูว่าเฟรมใช้เวลานานกว่า 16.67 ms หรือไม่

หน่วยความจำเซิร์ฟเวอร์

พยายามรักษาการใช้หน่วยความจำของเซิร์ฟเวอร์ให้ต่ำกว่า 50% การใช้หน่วยความจำทั้งหมดของเซิร์ฟเวอร์ใช้สูตรต่อไปนี้:

6.25 GiB + (100 MiB * largest_number_of_connected_players)

ตัวอย่างเช่น เซิร์ฟเวอร์ที่มีผู้เล่นเชื่อมต่อ 30 คนมีหน่วยความจำทั้งหมดประมาณ 9.18 GiB เซิร์ฟเวอร์จะได้รับหน่วยความจำเมื่อผู้เล่นเชื่อมต่อ แต่ ไม่ สูญเสียเมื่อผู้เล่นตัดการเชื่อมต่อ หากผู้เล่น 10 คนออก เซิร์ฟเวอร์ยังคงมีหน่วยความจำ 9.18 GiB แทนที่จะลดลงเหลือ 8.2 GiB

เมื่อเซิร์ฟเวอร์ปิด (เช่น เมื่อว่างเปล่าหรือเป็นส่วนหนึ่งของ กระบวนการอัปเดต) การแทนที่ของพวกเขาจะเริ่มต้นด้วยจำนวนหน่วยความจำพื้นฐานและเริ่มขยายขึ้นเมื่อผู้เล่นเชื่อมต่อ

หน่วยความจำไคลเอนต์

มีหลายวิธีในการตรวจสอบการใช้หน่วยความจำสำหรับเกม:

  1. เปิด Developer Console และสลับไปที่แท็บ Memory แท็บนี้ให้การแยกแยะว่าใช้หน่วยความจำอย่างไร ใช้ไคลเอนต์แทน Studio เพื่อให้ได้การอ่านค่าที่แม่นยำที่สุด
  2. เปิดใช้งานมุมมอง Performance Stats จากเมนูการตั้งค่าในไคลเอนต์เพื่อดูการซ้อนทับที่มีการใช้หน่วยความจำทั้งหมดของไคลเอนต์

การใช้หน่วยความจำสูงไม่จำเป็นต้องบ่งบอกถึงปัญหา แต่มีบางสัญญาณที่คุณอาจต้องตรวจสอบเพิ่มเติม ได้แก่:

  • เปอร์เซ็นต์ที่สำคัญของการชนของไคลเอนต์ที่แสดงใน Performance Dashboard โดยเฉพาะอย่างยิ่งการเพิ่มขึ้นอย่างกะทันหันที่ตรงกับการอัปเดต จำนวนการชนบางอย่างเป็นสิ่งที่คาดหวัง แต่คุณควรตรวจสอบหากอัตราการชนของคุณเพิ่มขึ้นเกิน 2-3%
  • เกิดการชนขึ้นในขณะที่ทดสอบบนอุปกรณ์ที่คุณต้องการให้เกมของคุณรองรับ

ส่วนสำคัญของการใช้หน่วยความจำของเกมในไคลเอนต์มาจากทรัพย์สิน เช่น รูปภาพ เมช และไฟล์เสียง ที่โหลดเข้าสู่หน่วยความจำ ใน Developer Console ให้ตรวจสอบป้ายกำกับต่อไปนี้ภายใต้ PlaceMemory:

  • GraphicsMeshParts - หน่วยความจำกราฟิกที่ใช้โดยเมช
  • GraphicsTexture - หน่วยความจำกราฟิกที่ใช้โดยพื้นผิว
  • Sounds - หน่วยความจำที่ใช้โดยไฟล์เสียง

เวลาโหลด

เวลาโหลด ซึ่งเรียกว่าเวลาเข้าร่วม คือเวลาทั้งหมดตั้งแต่เมื่อผู้เล่นคลิก Play จนถึงเมื่อโลกเรนเดอร์และพวกเขาสามารถเริ่มเล่นได้ หลังจากที่ไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ การเข้าร่วมจะเกิดขึ้นตามลำดับต่อไปนี้:

  1. ReplicatedFirst จะทำการจำลองไปยังไคลเอนต์ และหน้าจอ โหลดที่กำหนดเอง ใด ๆ ที่อยู่ภายในจะปรากฏขึ้น
  2. ข้อมูลโมเดลที่เหลือจะถูกจำลอง รวมถึงทุกอย่างใน ReplicatedStorage และ Workspace หากคุณเปิดใช้งาน การสตรีมอินสแตนซ์ จะมีเพียงพื้นที่ของ Workspace ใกล้จุดเกิดของผู้เล่นที่จำลองในขั้นตอนนี้
  3. อวตารของผู้เล่นจะโหลด เวลาโหลดจะสิ้นสุดเมื่อหน้าจอโหลดหายไปและโลกเริ่มเรนเดอร์

การรู้ว่าขั้นตอนใดช้า จะช่วยให้คุณเลือกการปรับแต่งที่มีผลกระทบมากที่สุด สำหรับสาเหตุและการแก้ไขทั่วไป ดูที่ ปรับปรุงประสิทธิภาพ

ไม่มีเครื่องมือในตัวสำหรับการตรวจสอบเวลาโหลด แต่เนื่องจากไม่ต้องการความแม่นยำในระดับมิลลิวินาที นาฬิกาจับเวลามักจะเป็นสิ่งที่คุณต้องการเพื่อทำความเข้าใจพื้นฐานปัจจุบันของคุณและตรวจสอบว่าคุณได้ทำการปรับปรุงที่สำคัญหรือไม่ คุณสามารถใช้สคริปต์ไคลเอนต์ใน ReplicatedFirst เพื่อให้เข้าใจถึงผลกระทบของการเปลี่ยนแปลงของคุณต่อเวลาโหลด แต่สคริปต์นี้ไม่ให้การวัดผลแบบครบวงจร ตั้งเวลาเริ่มต้นหลังจากที่ ReplicatedFirst จำลองและหยุดเมื่อการจำลองเริ่มต้นเสร็จสิ้นและ DataModel.Loaded ถูกเรียก ดังนั้นจึงไม่รวมเวลาในการเชื่อมต่อกับเซิร์ฟเวอร์หรือโหลดอวตาร:

local startTime = os.clock()
game.Loaded:Connect(function()
local loadTime = os.clock() - startTime
local roundedLoadTime = math.round(loadTime * 10000) / 10000 -- สี่ตำแหน่งทศนิยม
print("เกมโหลดในเวลา " .. roundedLoadTime .. " วินาที.")
print("จำนวนอินสแตนซ์ที่โหลด: " .. #workspace:GetDescendants())
end)

เพื่อให้ได้ข้อมูลเชิงลึกเพิ่มเติม เปิดใช้งาน Print Join Size Breakdown จากแท็บ Network ของ Studio Settings เพื่อพิมพ์ 20 อินสแตนซ์ที่ใหญ่ที่สุดตามขนาดและการแบ่งเปอร์เซ็นต์ตามประเภทของอินสแตนซ์เมื่อคุณเริ่มเกมใน Studio

หากเวลาโหลดของคุณสูงเกินไปเมื่อเปรียบเทียบกับขนาดที่ชัดเจนของเกมของคุณ ให้ตรวจสอบสถานที่ของคุณสำหรับสคริปต์ที่ไม่รู้จักหรือถูกปิดบัง โมเดลฟรีบางตัวจาก Creator Store มีสคริปต์ที่สร้างอินสแตนซ์เพิ่มเติมหลายพันตัว ซึ่งเพิ่มปริมาณข้อมูลที่ต้องจำลองเมื่อผู้เล่นเข้าร่วมอย่างมาก

วัดเวลาโหลดก่อนและหลังการปรับแต่งหรืออัปเดตแต่ละครั้งเพื่อให้คุณสามารถยืนยันผลกระทบและจับการถดถอย การเพิ่มขึ้นอย่างกะทันหันมักหมายความว่ามีเนื้อหาถูกเพิ่มลงใน ReplicatedStorage หรือการเปลี่ยนแปลงทรัพย์สินทำให้ขนาดการดาวน์โหลดเพิ่มขึ้น

Ping

การวัด ping (ความล่าช้า) สองประเภทหลักคือ network ping และ data ping

Network ping คือเวลาที่ใช้ในการเดินทางไปกลับที่วัดจากเมื่อไคลเอนต์ส่งแพ็กเกจข้อมูลเครือข่ายไปจนถึงเมื่อมันได้รับการตอบกลับจากเซิร์ฟเวอร์ มันคล้ายกับสิ่งที่รายงานว่าเป็น time โดยยูทิลิตี้เครือข่าย ping ทั่วไป

Network ping สามารถมองเห็นได้ในแถบ Performance Stats มันส่วนใหญ่ได้รับผลกระทบจากความยาวของเส้นทางเครือข่ายระหว่างไคลเอนต์และเซิร์ฟเวอร์ และอยู่นอกการควบคุมของคุณ อย่างไรก็ตาม คุณสามารถจำลอง ping และเงื่อนไขเครือข่ายอื่น ๆ โดยใช้ network simulation เมื่อทดสอบใน Studio

Data ping คือเวลาที่ใช้ในการเดินทางไปกลับที่วัดจากเมื่อไคลเอนต์ส่งข้อมูลอย่างเชื่อถือได้ผ่านระบบการจำลองไปจนถึงเมื่อมันได้รับการตอบกลับจากระบบการจำลองของเซิร์ฟเวอร์ มันรวมถึงเวลาที่ใช้ในคิวการจำลองของไคลเอนต์และเซิร์ฟเวอร์ รวมถึงการส่งข้อมูล TCP-like ใหม่สำหรับแพ็กเกจที่สูญหายหรือเสียหาย

Data ping คล้ายกับการส่งเหตุการณ์ระยะไกลที่เชื่อถือได้จากไคลเอนต์ รับมันบนเซิร์ฟเวอร์ และจากนั้นส่งเหตุการณ์ระยะไกลที่เชื่อถือได้จากเซิร์ฟเวอร์ไปยังไคลเอนต์เป็นการตอบสนอง เนื่องจาก data ping ยังรวมถึงเวลาที่ใช้ในเครือข่ายระหว่างไคลเอนต์และเซิร์ฟเวอร์ มันจึงมากกว่าหรือเท่ากับ network ping

ค่า data ping เฉลี่ยสำหรับผู้เล่นทั้งหมดที่เชื่อมต่อกับเซิร์ฟเวอร์สามารถมองเห็นได้ในแท็บ Server Stats ของ Developer Console ค่า data ping สำหรับไคลเอนต์แต่ละตัวสามารถมองเห็นได้โดยใช้ ShiftF3 เพื่อแสดงสถิติการดีบักเครือข่าย

Data ping ได้รับผลกระทบจากทั้งเส้นทางเครือข่ายและความล่าช้าในการจัดคิวการจำลอง เมื่อเซิร์ฟเวอร์สร้างข้อมูลการจำลองได้เร็วกว่าที่เครือข่ายจะส่งมัน (หรือเร็วกว่าที่ไคลเอนต์จะประมวลผลมัน) ข้อมูลจะต้องรอในคิวการจำลอง ความแตกต่างบางประการระหว่าง data ping และ network ping เป็นเรื่องปกติเนื่องจากการส่งข้อมูลใหม่ในเครือข่ายและวิธีการประมวลผลข้อมูลเครือข่ายโดยแอป Roblox อย่างไรก็ตาม หาก data ping สูงกว่ามากกว่า network ping ให้ใช้ MicroProfiler เพื่อตรวจสอบการจราจรเครือข่าย สำหรับข้อเสนอแนะแนวทางการปรับแต่ง ดูที่ networking and replication

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ