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