한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

คู่มือเกมแลค › ปัญหาที่เกิดกับบางคนเท่านั้น

ข้อมูลของตัวละครบางตัวใหญ่เกินไป One character with oversized data (inventory, mail, buffs)

ID สาเหตุ pt-heavy-char · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ อินฟรา DB (ทีมอินฟรา)

เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →

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

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

อาการ
เข้าเกมไม่ได้/โหลดไม่จบ, อินพุตดีเลย์, ค้าง
ปัจจัย
การหยุดชะงัก
ใครเจอ
เราคนเดียว, เฉพาะบางฟีเจอร์
เกิดเมื่อไร
หลังล็อกอิน/หลังปิดปรับปรุง, ตอนทำแอ็กชันบางอย่าง, ระหว่างเดินทาง/ย้ายแมพ
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ อินฟรา DB (ทีมอินฟรา)
งานฝั่งทีมพัฒนาเกม
จำกัดความจุกระเป๋าและกล่องจดหมาย และลบจดหมายเก่าอัตโนมัติ, โหลดแยกเฉพาะส่วนที่ต้องใช้, บันทึกเฉพาะส่วนที่เปลี่ยนนอกเธรดเกม
งานฝั่งทีมอินฟรา
หาการอ่านที่ช้าซึ่งเกิดซ้ำกับตัวละครเดิมจาก slow query log แล้วส่งให้ทีมพัฒนาเกม, ให้รายชื่ออันดับต้นของตัวละครที่มีจำนวนแถวไอเทมและจดหมายมาก
ตัวเลขที่ควรรู้
ถ้าไอเทมหนึ่งชิ้นคือหนึ่งแถวใน DB ตัวละครที่มีไอเทม 5,000 ชิ้นจะอ่าน 5,000 แถวทุกครั้งที่เชื่อมต่อ ซึ่งมากกว่าตัวละครทั่วไปหลายสิบเท่า
บนกราฟ
สูงเฉพาะบางกลุ่ม · เวลาเชื่อมต่อ/บันทึกแยกตามตัวละคร, จำนวนแถวที่อ่านจาก DB แยกตามตัวละคร
จุดที่ต้องดู
หาการอ่านและการบันทึกที่ช้าซึ่งเกิดซ้ำกับ ID ตัวละครเดิมใน slow query log ของ DB (MySQL slow query log, PostgreSQL log_min_duration_statement) และดึงรายชื่ออันดับต้นของจำนวนแถวต่อตัวละครในตารางไอเทมและจดหมาย
สัญญาณว่าใช่
คิวรีที่ช้ากระจุกที่ ID ตัวละครไม่กี่ตัว จำนวนแถวไอเทมและจดหมายของตัวละครเหล่านั้นสูงเป็นหลายสิบเท่าของค่าเฉลี่ย และเชื่อมต่อจาก PC หรือเน็ตอื่นก็ช้าเท่าเดิม
สัญญาณว่าไม่ใช่
ตัวละครอื่นในบัญชีเดียวกันหรือผู้เล่นคนอื่นก็ช้าด้วย: น่าจะเป็นที่เครื่อง DB หรือล็อก ถ้าตัวละครนั้นปกติบน PC อื่น น่าจะเป็นสภาพแวดล้อมของผู้เล่น
วิธีตรวจ
ใช้เครื่องมือฝั่งอินฟรา (ไม่ต้องใช้โค้ดเกม)
รายละเอียดเพิ่มเติม
ถ้าใช้ตัวละครเดียวกันเชื่อมต่อจาก PC หรือเน็ตอื่นแล้วยังช้าเท่าเดิม แต่ตัวละครอื่นในบัญชีเดียวกันปกติ ให้สงสัยข้อมูลตัวละคร นี่คือเหตุผลที่การแจ้งปัญหาต้องมีชื่อตัวละครเสมอ

แหล่งอ้างอิง

  1. Extraneous Fetching antipattern Microsoft Azure
    ถ้าดึงข้อมูลมากเกินจำเป็น ภาระ I/O จะเพิ่มขึ้นและตอบสนองช้าลง
  2. PostgreSQL Documentation: Error Reporting and Logging PostgreSQL
    log_min_duration_statement: บันทึก SQL ที่ใช้เวลาเกินกำหนดเพื่อติดตามคิวรีที่ช้า
  3. The Slow Query Log MySQL
    slow query log ที่บันทึกคิวรีซึ่งใช้เวลาเกิน long_query_time

สาเหตุที่ควรดูประกอบ

ชั้นเดียวกัน: ปัญหาที่เกิดกับบางคนเท่านั้น

สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (เข้าเกมไม่ได้/โหลดไม่จบ)

ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง