วัดประสิทธิภาพ Firebase Realtime Database ของคุณด้วยเครื่องมือสร้างโปรไฟล์ฐานข้อมูลที่สร้างขึ้นใน Firebase CLI เครื่องมือสร้างโปรไฟล์จะบันทึกกิจกรรมทั้งหมดในฐานข้อมูลของคุณในช่วงเวลาที่กำหนด จากนั้นจึงสร้างรายงานโดยละเอียด ใช้รายงานโดยละเอียดเพื่อแก้ไขปัญหาเกี่ยวกับประสิทธิภาพของฐานข้อมูล ระบุพื้นที่ที่มีปัญหา และลดการค้นหาที่ไม่ได้จัดทำดัชนี
สร้างโปรไฟล์
ก่อนที่คุณจะเริ่มสร้างโปรไฟล์ Firebase Realtime Database ตรวจสอบให้แน่ใจว่าคุณใช้ Firebase CLI เวอร์ชันล่าสุด และคุณได้เตรียมข้อมูลเบื้องต้นสำหรับฐานข้อมูลและโครงการที่คุณต้องการสร้างโปรไฟล์ โปรดทราบว่าคุณต้องเป็นบรรณาธิการหรือเจ้าของโปรเจ็กต์นั้นจึงจะโปรไฟล์ได้
เริ่มทำโปรไฟล์ฐานข้อมูลของคุณด้วยคำสั่งต่อไปนี้:
firebase database:profile
ตัวสร้างโปรไฟล์จะแสดงข้อความสถานะในขณะที่บันทึกการดำเนินการจากฐานข้อมูลของคุณและสร้างโปรไฟล์กด Enter เพื่อกรอกโปรไฟล์และแสดงผล
ตีความผลลัพธ์ของคุณ
เครื่องมือสร้างโปรไฟล์จะรวมข้อมูลที่เก็บรวบรวมเกี่ยวกับการดำเนินงานของฐานข้อมูลของคุณ และแสดงผลลัพธ์ในสามหมวดหมู่หลัก: ความเร็ว แบนด์วิดท์ และ ข้อความค้นหาที่ไม่ได้จัดทำดัชนี
ความเร็ว
รายงานความเร็ววัดเวลาตอบสนองของเซิร์ฟเวอร์ (เป็นมิลลิวินาที) สำหรับการทำงานแต่ละประเภท อย่างไรก็ตาม ความเร็วที่วัดได้ในรายงานความเร็วอาจไม่สะท้อนถึงประสบการณ์ของผู้ใช้ปลายทางอย่างแท้จริง ปัจจัยต่างๆ รวมถึงเงื่อนไขของเครือข่ายสามารถเพิ่มเวลาแฝงในฝั่งไคลเอ็นต์ได้
รายงานความเร็วมีคุณสมบัติดังต่อไปนี้:
- เส้นทาง: เส้นทางในฐานข้อมูลของคุณที่เกิดการดำเนินการ หากมีโหนดย่อยมากกว่า 25 โหนด เครื่องมือสร้างโปรไฟล์จะยุบโหนดเหล่านี้ลงในพาธพาเรนต์และเพิ่มเครื่องหมาย
$wildcard
คุณอาจเห็นไดเรกทอรีรากของฐานข้อมูลในรายงาน ซึ่งแสดงด้วยเครื่องหมายทับ/
- จำนวน: จำนวนการดำเนินการที่เกิดขึ้นในเส้นทางที่กำหนด
- ความเร็วการดำเนินการเฉลี่ย: เวลาเฉลี่ยที่เซิร์ฟเวอร์ใช้ในการดำเนินการตรรกะทางธุรกิจที่จำเป็นในการจัดการประเภทการดำเนินการเฉพาะที่เส้นทางนั้น ช่วงเวลาที่วัดที่นี่เริ่มต้นหลังจากนั้นโดยวัดด้วย "เวลาที่รอดำเนินการเฉลี่ย" ที่อธิบายไว้ด้านล่าง
- เวลารอดำเนินการโดยเฉลี่ย: เวลาเฉลี่ยที่คำขออยู่ในคิวก่อนที่จะดำเนินการ ความล่าช้านี้เป็นเรื่องปกติสำหรับคำขอที่เริ่มต้นโดยไคลเอ็นต์ทั้งหมด เวลาแฝงของคำขอฝั่งเซิร์ฟเวอร์ทั้งหมดคือผลรวมของเวลาที่รอดำเนินการของคำขอนั้นและความเร็วในการดำเนินการโดยประมาณ
- สิทธิ์ถูกปฏิเสธ: จำนวนการดำเนินการที่เส้นทางที่กำหนดซึ่งถูกบล็อกโดย กฎฐานข้อมูล Firebase บนฐานข้อมูลของคุณ
รายงานความเร็วตามประเภทการทำงาน | |
---|---|
อ่านความเร็วในการดำเนินการ | เวลาตอบสนองของเซิร์ฟเวอร์สำหรับคำขอไคลเอนต์เพื่ออ่านข้อมูลจากฐานข้อมูล โดยทั่วไปเวลาในการดำเนินการอ่านจะปรับขนาดตามจำนวนข้อมูลที่อ่าน แต่แม้การอ่านเพียงเล็กน้อยก็อาจล่าช้าได้จากการดึงข้อมูลแคชล่วงหน้า |
ความเร็วในการดำเนินการเขียน | เวลาตอบสนองของเซิร์ฟเวอร์สำหรับคำร้องขอของไคลเอ็นต์ในการเขียนข้อมูลไปยังฐานข้อมูล เวลาในการดำเนินการเขียนจะขึ้นอยู่กับจำนวนข้อมูลที่กำลังเขียน | เชื่อมต่อความเร็วการดำเนินการ | เวลาตอบสนองของเซิร์ฟเวอร์สำหรับการร้องขอเพื่อสร้างไปยังไคลเอ็นต์ฐานข้อมูล เวลาแฝงสำหรับคำขอการเชื่อมต่อถูกควบคุมโดยการทำบัญชีฝั่งเซิร์ฟเวอร์ในหน่วยความจำที่เกี่ยวข้องกับการจัดการการเชื่อมต่อ |
ความเร็วในการดำเนินการออกอากาศ | ระยะเวลาที่เซิร์ฟเวอร์ใช้ในการกระจายข้อมูลไปยังไคลเอนต์ที่รับฟังเส้นทางที่กำหนดสำหรับการอัปเดตตามเวลาจริง คุณสมบัติ Count ในรายงานความเร็วการออกอากาศจะรวมจำนวนการออกอากาศที่เกิดขึ้น ไม่ใช่จำนวนไคลเอนต์ที่ได้รับข้อมูล ตัวอย่างเช่น หากไคลเอ็นต์ 10 เครื่องกำลังฟังในเส้นทางที่กำหนด และเซิร์ฟเวอร์ออกอากาศการอัปเดตไปยังไคลเอนต์ทั้ง 10 เครื่อง จำนวนการออกอากาศจะสะท้อนถึงการออกอากาศเพียง 1 ครั้งเท่านั้น แม้ว่าไคลเอ็นต์ 10 รายจะได้รับข้อมูลก็ตาม คุณสมบัติการปฏิเสธ สิทธิ์ไม่รวมอยู่ในรายงานความเร็วการแพร่ภาพ |
แบนด์วิธ
รายงานแบนด์วิธให้ข้อมูลเชิงลึกเกี่ยวกับปริมาณข้อมูลที่ฐานข้อมูลของคุณใช้ไปทั้งการดำเนินการขาเข้าและขาออก อย่างไรก็ตาม คุณไม่ควรใช้รายงานแบนด์วิดท์เพื่อประเมินการเรียกเก็บเงิน เนื่องจากรายงานนี้ไม่รวมแบนด์วิดท์ที่ใช้สำหรับการดำเนินการอื่นๆ เช่น การทำโปรไฟล์ฐานข้อมูลของคุณ รายงานแบนด์วิธจะประมาณขนาดเพย์โหลดของข้อมูลที่ใช้โดยการอ่าน เขียน และแพร่ภาพไปยังและจากฐานข้อมูลของคุณอย่างคร่าว ๆ เป็นเครื่องมือที่ใช้วัดประสิทธิภาพ ไม่ใช่เครื่องมือที่คาดการณ์การเรียกเก็บเงิน
รายงานแบนด์วิธมีคุณสมบัติดังต่อไปนี้:
เส้นทาง: เส้นทางในฐานข้อมูลของคุณที่เกิดการดำเนินการ หากมีโหนดลูกมากกว่า 25 โหนด เครื่องมือสร้างโปรไฟล์จะยุบโหนดเหล่านี้ลงในพาธพาเรนต์
รวม: ไบต์ขาออกหรือขาเข้าทั้งหมดที่ใช้ระหว่างการดำเนินการทั้งหมดในเส้นทางที่กำหนด
จำนวน: จำนวนการดำเนินการที่เกิดขึ้นในเส้นทางที่กำหนด
ค่าเฉลี่ย: จำนวนเฉลี่ยของไบต์ที่ดาวน์โหลดหรืออัปโหลดระหว่างการดำเนินการตามเส้นทางที่กำหนด (ไบต์/เขียน หรือ ไบต์/อ่าน)
รายงานแบนด์วิธ | |
---|---|
ไบต์ที่ดาวน์โหลด | ข้อมูลที่ใช้ผ่านการอ่านและการออกอากาศที่ส่งออกผ่านไคลเอ็นต์ SDK และ REST API |
ไบต์ที่อัปโหลด | ข้อมูลที่ใช้ผ่านคำขอเขียนที่เข้ามาในเซิร์ฟเวอร์ฐานข้อมูล การลบจะแสดงเป็นการเขียนโดยมี 0 ไบต์อยู่ใต้ขาเข้า |
ข้อความค้นหาที่ไม่ได้จัดทำดัชนี
ข้อความค้นหาที่ไม่ได้จัดทำดัชนีอาจมีราคาแพง เนื่องจากไคลเอ็นต์ดาวน์โหลดข้อมูลทั้งหมดจากตำแหน่งที่ตั้ง จากนั้นดำเนินการค้นหาข้อมูลนั้น สิ่งนี้ใช้แบนด์วิธมากเกินความจำเป็น แก้ไขคำค้นหาที่ไม่ได้จัดทำดัชนีให้ได้มากที่สุดเพื่อเพิ่มประสิทธิภาพการทำงานของฐานข้อมูลของคุณ
รายงาน Query ที่ไม่ได้จัดทำดัชนีแสดงคุณสมบัติต่อไปนี้:
- เส้นทาง: เส้นทางในฐานข้อมูลของคุณที่มีการสืบค้นที่ไม่ได้จัดทำดัชนี
- ดัชนี: กฎที่คุณควรเพิ่มเพื่อแก้ไขข้อความค้นหาที่ไม่ได้จัดทำดัชนี เรียนรู้เพิ่มเติมเกี่ยวกับการจัดทำดัชนีใน Index your data
- จำนวน: จำนวนของข้อความค้นหาที่ไม่ได้จัดทำดัชนีซึ่งเกิดขึ้นที่เส้นทางที่กำหนด
การทำโปรไฟล์ขั้นสูง
หากต้องการดูการดำเนินการทั้งหมดที่ฐานข้อมูลของคุณกำลังจัดการ ให้ใช้แฟล็ก --raw
เมื่อคุณทำโปรไฟล์ฐานข้อมูลของคุณ ดังนี้:
firebase database:profile --raw
เอาต์พุตดิบยังมีข้อมูลไคลเอ็นต์สำหรับแต่ละการดำเนินการ เช่น สตริง userAgent
และที่อยู่ IP เรียนรู้เพิ่มเติมเกี่ยวกับการดำเนินการต่างๆ ที่สร้างโปรไฟล์ใน Firebase Realtime Database ของคุณใน Firebase Realtime Database Operation Types
เครื่องมือสร้างโปรไฟล์: ไม่ใช่เครื่องมือเรียกเก็บเงิน
อย่าใช้เครื่องมือสร้างโปรไฟล์เพื่อประเมินค่าใช้จ่ายแบนด์วิธ เครื่องมือสร้างโปรไฟล์มีวัตถุประสงค์เพื่อให้คุณเห็นภาพรวมของประสิทธิภาพฐานข้อมูลของคุณ เพื่อช่วยคุณตรวจสอบการดำเนินงานและแก้ไขปัญหา ไม่ใช่เพื่อประเมินการเรียกเก็บเงิน ไม่ได้คำนึงถึงทราฟฟิกเครือข่าย แต่จะบันทึกเฉพาะข้อมูลแอปพลิเคชันโดยประมาณที่ส่งในการตอบสนองเท่านั้น
ต่อไปนี้คือตัวอย่างทั่วไปของการรับส่งข้อมูลเครือข่ายที่เรียกเก็บเงินโดย Firebase ซึ่งไม่ครอบคลุมในโปรไฟล์ฐานข้อมูลของคุณ:
- โอเวอร์เฮดโปรโตคอล: การรับส่งข้อมูลเพิ่มเติมบางอย่างระหว่างเซิร์ฟเวอร์และไคลเอ็นต์จำเป็นต่อการสร้างและดูแลเซสชัน การรับส่งข้อมูลนี้อาจรวมถึง: โอเวอร์เฮดโปรโตคอลเรียลไทม์ของ Firebase Realtime Database, โอเวอร์เฮดของ WebSocket และโอเวอร์เฮด HTTP ทั้งนี้ขึ้นอยู่กับโปรโตคอลพื้นฐาน ทุกครั้งที่สร้างการเชื่อมต่อ โอเวอร์เฮดนี้เมื่อรวมกับโอเวอร์เฮดการเข้ารหัส SSL ใดๆ จะทำให้เกิดค่าใช้จ่ายในการเชื่อมต่อ แม้ว่าโดยปกติแล้วจะไม่ใช่แบนด์วิดท์จำนวนมาก แต่ก็สามารถมีจำนวนมากได้หากเพย์โหลดของคุณมีขนาดเล็กหรือคุณทำการเชื่อมต่อสั้น ๆ บ่อย ๆ
- ค่าใช้จ่ายในการเข้ารหัส SSL: มีค่าใช้จ่ายที่เกี่ยวข้องกับค่าใช้จ่ายในการเข้ารหัส SSL ที่จำเป็นสำหรับการเชื่อมต่อที่ปลอดภัย โดยเฉลี่ยแล้ว ค่าใช้จ่ายนี้จะอยู่ที่ประมาณ 3.5KB สำหรับการจับมือครั้งแรก และประมาณ 40B สำหรับส่วนหัวของบันทึก TLS ในแต่ละข้อความขาออก สำหรับแอปส่วนใหญ่ นี่เป็นเปอร์เซ็นต์เล็กน้อยของค่าบริการของคุณ อย่างไรก็ตาม นี่อาจกลายเป็นเปอร์เซ็นต์ที่มาก หากกรณีเฉพาะของคุณต้องการการจับมือ SSL จำนวนมาก ตัวอย่างเช่น อุปกรณ์ที่ไม่รองรับตั๋วเซสชัน TLS อาจต้องใช้การเชื่อมต่อ SSL จำนวนมาก
อ่านเพิ่มเติมเกี่ยวกับ การทำความเข้าใจและการประมาณการบิลของคุณ