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

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

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

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

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

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

ในเกม
F9
การทดสอบใน Studio

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

ในเกม
CtrlAltF6 (F6)
การทดสอบใน Studio

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

เซสชันสด
สถิติการดีบักแสดงข้อมูลรายละเอียดเกี่ยวกับกราฟิก, ฟิสิกส์, การรับส่งข้อมูลเครือข่าย, และ FPS
Studio

ในเกม
ShiftCtrlF1 (ShiftF1), ShiftCtrlF2 (ShiftF2), ShiftCtrlF3 (ShiftF3), ShiftCtrlF4 (ShiftF4), ShiftCtrlF5 (ShiftF5)
การทดสอบใน Studio

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

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

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

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

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

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

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

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

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

เพื่อเช็คอัตราเฟรมของเกมของคุณ:

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

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

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

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

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

6.25 GiB + (100 MiB * จำนวนผู้เล่นที่เชื่อมต่อมากที่สุด)

ตัวอย่างเช่น เซิร์ฟเวอร์ที่มีผู้เล่นเชื่อมต่อ 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 - หน่วยความจำที่ใช้โดยไฟล์เสียง

เวลาโหลด

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


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

Ping

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

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

Network ping สามารถมองเห็นได้ในแถบ Performance Stats โดยมักจะได้รับผลกระทบจากความยาวของเส้นทางเครือข่ายระหว่างไคลเอนต์และเซิร์ฟเวอร์ และอยู่นอกเหนือการควบคุมของคุณ อย่างไรก็ตามคุณสามารถจำลอง ping และเงื่อนไขเครือข่ายอื่น ๆ โดยใช้ การจำลองเครือข่าย เมื่อทดสอบเกมใน 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 เพื่อดูการรับส่งข้อมูลเครือข่าย สำหรับข้อเสนอแนะแนวทางในการปรับแต่งให้ดูที่ การเชื่อมต่อเครือข่ายและการทำซ้ำ

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