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