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