يمكنكم قياس أداء Firebase Realtime Database باستخدام أداة تحديد الأداء في قاعدة البيانات المضمّنة في Firebase CLI. تسجِّل أداة تحديد الأداء جميع الأنشطة في قاعدة البيانات خلال فترة زمنية معيّنة، ثم تنشئ تقريرًا مفصّلاً. يمكنكم استخدام التقرير المفصّل لتحديد المشاكل في أداء قاعدة البيانات وحلّها، ورصد المناطق التي تسبّب المشاكل، وتقليل طلبات البحث غير المفهرسة.
إنشاء ملف شخصي
قبل البدء في تحديد أداء Firebase Realtime Database، تأكّدوا من استخدام أحدث إصدار من Firebase CLI ومن تهيئته لقاعدة البيانات والمشروع اللذين تريدون تحديد أدائهما. يُرجى العِلم أنّه يجب أن تكونوا محرِّرين أو مالكين لهذا المشروع لتحديد أدائه.
ابدأوا تحديد أداء قاعدة البيانات باستخدام الأمر التالي:
تعرض أداة تحديد الأداء رسالة حالة أثناء تسجيل العمليات من قاعدة البيانات وإنشاء الملف الشخصي.firebase database:profile
اضغطوا على Enter لإكمال الملف الشخصي وعرض النتائج.
تفسير النتائج
تجمِّع أداة تحديد الأداء البيانات التي تم جمعها عن عمليات قاعدة البيانات وتعرض النتائج في ثلاث فئات رئيسية: السرعة، ومعدّل نقل البيانات، وطلبات البحث غير المفهرسة.
السرعة
يقيس تقرير السرعة وقت استجابة الخادم (بالملّي ثانية) لكل نوع من أنواع العمليات. ومع ذلك، قد لا تعكس السرعة المقاسة في تقرير السرعة السرعة التي يختبرها المستخدمون النهائيون فعليًا. يمكن أن تؤدي عوامل مختلفة، بما في ذلك ظروف الشبكة، إلى إضافة وقت استجابة على جانب العميل.
يتضمّن تقرير السرعة الخصائص التالية:
- المسار: المسار في قاعدة البيانات حيث حدثت العمليات. إذا كان هناك أكثر من 25 عقدة فرعية، ستصغِّر أداة تحديد الأداء هذه العُقد في مسار رئيسي وتضيف علامة
$wildcard. قد يظهر دليل قاعدة البيانات الجذر في التقرير، ويتم تمثيله بشرطة مائلة للأمام/. - العدد: عدد العمليات التي حدثت في المسار المحدّد.
- متوسّط سرعة التنفيذ: متوسّط الوقت الذي يستغرقه الخادم لتنفيذ منطق النشاط التجاري اللازم للتعامل مع نوع العملية المحدّد في هذا المسار. تبدأ الفترة الزمنية المقاسة هنا بعد الفترة الزمنية المقاسة من خلال "متوسّط وقت الانتظار" الموضّح أدناه.
- متوسّط وقت الانتظار: متوسّط الوقت الذي تقضيه الطلبات في قائمة الانتظار قبل تنفيذها. هذا التأخير شائع في جميع الطلبات التي يبدأها العميل. إنّ إجمالي وقت استجابة الطلب من جهة الخادم هو تقريبًا مجموع وقت الانتظار وسرعة التنفيذ لهذا الطلب.
- تم رفض الإذن: عدد العمليات في المسار المحدّد التي تم حظرها بواسطة قواعد Firebase Database على قاعدة البيانات.
| تقرير السرعة حسب نوع العملية | |
|---|---|
| سرعة تنفيذ القراءة | وقت استجابة الخادم لطلبات العميل لقراءة البيانات من قاعدة البيانات. يزداد وقت تنفيذ القراءة بشكل عام مع كمية البيانات التي تتم قراءتها، ولكن قد تتأخر أيضًا بعض عمليات القراءة الصغيرة بسبب جلب البيانات مسبقًا من ذاكرة التخزين المؤقت. |
| سرعة تنفيذ الكتابة | وقت استجابة الخادم لطلبات العميل لكتابة البيانات في قاعدة البيانات. يزداد وقت تنفيذ الكتابة مع كمية البيانات التي تتم كتابتها. |
| سرعة تنفيذ الاتصال | وقت استجابة الخادم لطلبات إنشاء اتصالات بعملاء قاعدة البيانات. يرجع وقت استجابة طلبات الاتصال بشكل أساسي إلى عمليات حفظ السجلات من جهة الخادم في الذاكرة المتعلّقة بإدارة الاتصال. |
| سرعة تنفيذ البث | مقدار الوقت الذي يستغرقه الخادم لتوزيع البيانات على العملاء الذين يستمعون إلى المسار المحدّد للحصول على آخر الأخبار في الوقت الفعلي. تجمِّع السمة العدد في تقرير سرعة البث عدد عمليات البث التي حدثت، وليس عدد العملاء الذين تلقّوا المعلومات. على سبيل المثال، إذا كان 10 عملاء يستمعون إلى مسار معيّن، وبثّ الخادم آخر الأخبار إلى جميع العملاء العشرة، فإنّ عدد عمليات البث يعكس عملية بث واحدة فقط، على الرغم من أنّ 10 عملاء تلقّوا البيانات. لا يتم تضمين السمة تم رفض الإذن في تقرير سرعة البث. |
معدّل نقل البيانات
يقدّم تقرير معدّل نقل البيانات إحصاءات حول مقدار البيانات التي تستهلكها قاعدة البيانات في العمليات الواردة والصادرة. ومع ذلك، يجب عدم استخدام تقرير معدّل نقل البيانات لتقدير الفوترة، لأنّه لا يتضمّن معدّل نقل البيانات المستخدَم في عمليات أخرى، مثل تحديد أداء قاعدة البيانات. يقدِّر تقرير معدّل نقل البيانات بشكل تقريبي حجم حمولة البيانات التي تستهلكها عمليات القراءة والكتابة والبث من قاعدة البيانات وإليها. إنّها أداة تقيس الأداء، وليس أداة تتوقّع الفوترة.
يتضمّن تقرير معدّل نقل البيانات الخصائص التالية:
المسار: المسار في قاعدة البيانات حيث حدثت العمليات. إذا كان هناك أكثر من 25 عقدة فرعية، ستصغِّر أداة تحديد الأداء هذه العُقد في مسار رئيسي.
الإجمالي: إجمالي وحدات البايت الصادرة أو الواردة المستخدَمة في جميع العمليات في المسار المحدّد.
العدد: عدد العمليات التي حدثت في المسار المحدّد.
المتوسّط: متوسّط عدد وحدات البايت التي تم تنزيلها أو تحميلها في العمليات في المسار المحدّد (وحدات البايت/الكتابة أو وحدات البايت/القراءة).
| تقرير معدّل نقل البيانات | |
|---|---|
| وحدات البايت التي تم تنزيلها | البيانات المستخدَمة من خلال عمليات القراءة والبث التي يتم إرسالها عبر حِزم تطوير البرامج (SDK) للعميل وREST API. |
| وحدات البايت التي تم تحميلها | البيانات المستخدَمة من خلال طلبات الكتابة الواردة إلى خادم قاعدة البيانات. تظهر عمليات الحذف كعمليات كتابة تتضمّن 0 بايت ضمن العمليات الواردة. |
طلبات البحث غير المفهرسة
يمكن أن تكون طلبات البحث غير المفهرسة مكلفة، لأنّ العملاء ينزِّلون جميع البيانات في موقع معيّن ثم يجرون طلبات بحث عنها. يؤدي ذلك إلى استخدام معدّل نقل بيانات أكبر من اللازم. يمكنكم حلّ أكبر عدد ممكن من طلبات البحث غير المفهرسة لتحسين أداء قاعدة البيانات.
يعرض تقرير "طلبات البحث غير المفهرسة" الخصائص التالية:
- المسار: المسار في قاعدة البيانات حيث حدثت طلبات البحث غير المفهرسة.
- الفهرس: القاعدة التي يجب إضافتها لحلّ طلبات البحث غير المفهرسة. مزيد من المعلومات عن الفهرسة في مقالة فهرسة البيانات.
- العدد: عدد طلبات البحث غير المفهرسة التي حدثت في المسار المحدّد.
تحديد الأداء المتقدّم
للاطّلاع على جميع العمليات التي تعالجها قاعدة البيانات، استخدِموا العلامة --raw عند تحديد أداء قاعدة البيانات، على النحو التالي:
firebase database:profile --raw
يتضمّن الناتج الأولي أيضًا معلومات العميل لكل عملية، مثل السلاسل userAgent وعناوين IP. مزيد من المعلومات عن العمليات المختلفة
التي تم تحديد أدائها في Firebase Realtime Database في Firebase Realtime Database أنواع العمليات.
أداة تحديد الأداء: ليست أداة للفوترة
لا تستخدِموا أداة تحديد الأداء لتقدير تكلفة معدّل نقل البيانات. تهدف أداة تحديد الأداء إلى منحكم صورة عامة عن أداء قاعدة البيانات، لمساعدتكم في رصد العمليات وتحديد المشاكل وحلّها، وليس لتقدير الفوترة. لا تأخذ الأداة في الاعتبار حركة بيانات الشبكة، بل تسجِّل فقط تقديرًا لبيانات التطبيق المرسَلة في الردود.
في ما يلي بعض الأمثلة الشائعة لحركة بيانات الشبكة التي تفرض عليها Firebase رسومًا ولا يتم تناولها في الملف الشخصي لقاعدة البيانات:
- البيانات الإضافية للبروتوكول: من الضروري توفّر بعض حركة البيانات الإضافية بين الخادم والعملاء لإنشاء جلسة والحفاظ عليها. استنادًا إلى البروتوكول الأساسي، قد تتضمّن حركة البيانات هذه ما يلي: البيانات الإضافية لبروتوكول الوقت الفعلي في قاعدة بيانات Firebase في الوقت الفعلي، والبيانات الإضافية لبروتوكول WebSocket، والبيانات الإضافية لرأس HTTP. في كل مرة يتم فيها إنشاء اتصال، تساهم هذه البيانات الإضافية، بالإضافة إلى أي بيانات إضافية لتشفير طبقة المقابس الآمنة (SSL)، في تكاليف الاتصال. على الرغم من أنّ هذه البيانات عادةً لا تمثّل معدّل نقل بيانات كبيرًا، يمكن أن تكون كبيرة إذا كانت الحمولات صغيرة أو إذا كنتم تجرون اتصالات قصيرة ومتكررة.
- البيانات الإضافية لتشفير طبقة المقابس الآمنة (SSL): هناك تكلفة مرتبطة بالبيانات الإضافية لتشفير طبقة المقابس الآمنة (SSL) اللازمة للاتصالات الآمنة. في المتوسّط، تبلغ هذه التكلفة 3.5 كيلوبايت تقريبًا للمصافحة الأولية، و40 بايت تقريبًا لرؤوس سجلّات بروتوكول أمان طبقة النقل (TLS) في كل رسالة صادرة. بالنسبة إلى معظم التطبيقات، تمثّل هذه التكلفة نسبة صغيرة من فاتورتكم. ومع ذلك، يمكن أن تصبح نسبة كبيرة إذا كانت حالتكم المحدّدة تتطلّب إجراء الكثير من عمليات المصافحة لطبقة المقابس الآمنة (SSL). على سبيل المثال، قد تتطلّب الأجهزة التي لا تتيح تذاكر جلسات بروتوكول أمان طبقة النقل (TLS) عددًا كبيرًا من عمليات المصافحة لاتصال طبقة المقابس الآمنة (SSL).
مزيد من المعلومات عن فهم فاتورتكم وتقديرها.