عملکرد Firebase Realtime Database خود را با ابزار پروفایلر پایگاه داده، که در Firebase CLI تعبیه شده است، اندازهگیری کنید. ابزار پروفایلر تمام فعالیتها در پایگاه داده شما را در یک دوره زمانی مشخص ثبت میکند، سپس یک گزارش دقیق تولید میکند. از این گزارش دقیق برای عیبیابی مشکلات عملکرد پایگاه داده، شناسایی نواحی مشکلدار و کاهش کوئریهای بدون ایندکس استفاده کنید.
ساخت پروفایل
قبل از شروع به پروفایل کردن Firebase Realtime Database خود، مطمئن شوید که از آخرین نسخه Firebase CLI استفاده میکنید و آن را برای پایگاه داده و پروژهای که میخواهید پروفایل کنید، مقداردهی اولیه کردهاید. توجه داشته باشید که برای پروفایل کردن، باید ویرایشگر یا مالک آن پروژه باشید.
با دستور زیر شروع به پروفایل کردن پایگاه داده خود کنید:
پروفایلر همزمان با ثبت عملیات از پایگاه داده شما و ساخت پروفایل، یک پیام وضعیت نمایش میدهد.firebase database:profile
برای تکمیل پروفایل و نمایش نتایج ، Enter را فشار دهید.
نتایج خود را تفسیر کنید
ابزار پروفایلر، دادههای جمعآوریشده در مورد عملیات پایگاه داده شما را تجمیع کرده و نتایج را در سه دسته اصلی نمایش میدهد: سرعت ، پهنای باند و کوئریهای ایندکسنشده .
سرعت
گزارش سرعت، زمان پاسخگویی سرور (برحسب میلیثانیه) را برای هر نوع عملیات اندازهگیری میکند. با این حال، سرعت اندازهگیری شده در گزارش سرعت ممکن است در واقع منعکس کننده تجربه سرعت کاربران نهایی نباشد. عوامل مختلفی، از جمله شرایط شبکه، میتوانند تأخیر را در سمت کلاینت افزایش دهند.
گزارش سرعت شامل ویژگیهای زیر است:
- مسیر: مسیری در پایگاه داده شما که عملیات در آن رخ داده است. اگر بیش از ۲۵ گره فرزند وجود داشته باشد، ابزار پروفایلر آنها را در یک مسیر والد قرار میدهد و یک نشانگر
$wildcardاضافه میکند. ممکن است دایرکتوری ریشه پایگاه داده خود را در گزارش مشاهده کنید که با یک اسلش/نمایش داده شده است. - تعداد: تعداد عملیاتی که در مسیر داده شده رخ داده است.
- میانگین سرعت اجرا: میانگین زمانی که طول میکشد تا سرور منطق کسبوکار مورد نیاز برای مدیریت نوع عملیات خاص در آن مسیر را اجرا کند. بازه زمانی اندازهگیری شده در اینجا پس از بازه زمانی اندازهگیری شده توسط "میانگین زمان انتظار" که در زیر توضیح داده شده است، شروع میشود.
- میانگین زمان انتظار: میانگین زمانی که درخواستها قبل از اجرا در صف انتظار میمانند. این تأخیر برای همه درخواستهای آغاز شده توسط کلاینت رایج است. کل تأخیر درخواست سمت سرور تقریباً مجموع زمان انتظار و سرعت اجرای آن درخواست است.
- مجوز رد شد: تعداد عملیات در مسیر داده شده که توسط قوانین پایگاه داده Firebase در پایگاه داده شما مسدود شده است.
| گزارش سرعت بر اساس نوع عملیات | |
|---|---|
| سرعت اجرای خواندن | زمان پاسخ سرور به درخواستهای کلاینت برای خواندن دادهها از پایگاه داده. زمان اجرای خواندن معمولاً با مقدار دادههای خوانده شده تغییر میکند، اما حتی برخی از خواندنهای کوچک نیز ممکن است به دلیل پیشواکشی حافظه پنهان (cache prefetching) به تأخیر بیفتند. |
| سرعت اجرای نوشتن | زمان پاسخ سرور به درخواستهای کلاینت برای نوشتن دادهها در پایگاه داده. زمان اجرای نوشتن با مقدار دادههای نوشته شده متناسب است. | سرعت اجرای اتصال | زمان پاسخگویی سرور برای ارسال درخواستها به کلاینتهای پایگاه داده. تأخیر درخواستهای اتصال تحت تأثیر حسابداری سمت سرور در حافظه مربوط به مدیریت اتصال است. |
| سرعت اجرای پخش | مدت زمانی که سرور صرف میکند تا دادهها را بین کلاینتهایی که به مسیر داده شده برای بهروزرسانیهای بلادرنگ گوش میدهند، توزیع کند. ویژگی Count در گزارش سرعت پخش، تعداد پخشهای رخ داده را جمع میکند، نه تعداد کلاینتهایی که اطلاعات را دریافت کردهاند. برای مثال، اگر 10 کلاینت در یک مسیر مشخص در حال گوش دادن باشند و سرور یک بهروزرسانی را برای هر 10 کلاینت پخش کند، تعداد پخش فقط 1 پخش را نشان میدهد، حتی اگر 10 کلاینت دادهها را دریافت کرده باشند. ویژگی «مجوز رد شده» در گزارش سرعت پخش لحاظ نشده است. |
پهنای باند
گزارش پهنای باند، بینشی در مورد میزان دادهای که پایگاه داده شما در عملیات ورودی و خروجی مصرف میکند، ارائه میدهد. با این حال، شما نباید از گزارش پهنای باند برای تخمین هزینه استفاده کنید، زیرا شامل پهنای باند مورد استفاده برای سایر عملیات، مانند پروفایل کردن پایگاه داده شما، نمیشود. گزارش پهنای باند تقریباً اندازه بار مفید دادههای مصرف شده توسط عملیات خواندن، نوشتن و پخش به و از پایگاه داده شما را تخمین میزند. این ابزاری است که عملکرد را اندازهگیری میکند، نه ابزاری که هزینه را پیشبینی میکند.
گزارش پهنای باند شامل ویژگیهای زیر است:
مسیر: مسیری در پایگاه داده شما که عملیات در آن رخ داده است. اگر بیش از ۲۵ گره فرزند وجود داشته باشد، ابزار پروفایلر آنها را در یک مسیر والد خلاصه میکند.
مجموع: کل بایتهای خروجی یا ورودی استفاده شده در تمام عملیات در مسیر داده شده.
تعداد: تعداد عملیاتی که در مسیر داده شده رخ داده است.
میانگین: میانگین تعداد بایتهای دانلود یا آپلود شده در طول عملیات در مسیر داده شده (بایت/نوشتن یا بایت/خواندن).
| گزارش پهنای باند | |
|---|---|
| بایتهای دانلود شده | دادههای مصرفشده از طریق عملیات خواندن و پخش که از طریق SDKهای کلاینت و REST API ارسال میشوند. |
| بایتهای آپلود شده | دادههایی که از طریق درخواستهای نوشتن وارد شده به سرور پایگاه داده مصرف میشوند. حذفها به صورت نوشتن با 0 بایت در زیر ورودی نمایش داده میشوند. |
کوئریهای بدون فهرستبندی
پرسوجوهای بدون فهرستبندی میتوانند پرهزینه باشند، زیرا کلاینتها تمام دادهها را در یک مکان دانلود میکنند و سپس پرسوجوهایی را روی آن انجام میدهند. این کار پهنای باند بیشتری از حد لازم مصرف میکند. تا جایی که میتوانید پرسوجوهای بدون فهرستبندی را حل کنید تا عملکرد پایگاه داده خود را بهینه کنید.
گزارش Unindexed Queries ویژگیهای زیر را نمایش میدهد:
- مسیر: مسیری در پایگاه داده شما که کوئریهای ایندکس نشده در آن رخ دادهاند.
- فهرستبندی: قاعدهای که باید برای حل کوئریهای فهرستبندی نشده اضافه کنید. برای اطلاعات بیشتر در مورد فهرستبندی، به فهرستبندی دادههای خود مراجعه کنید.
- تعداد: تعداد کوئریهای ایندکس نشدهای که در مسیر داده شده رخ دادهاند.
پروفایلینگ پیشرفته
برای مشاهده تمام عملیاتی که پایگاه داده شما مدیریت میکند، هنگام پروفایل کردن پایگاه داده خود، از پرچم --raw به شرح زیر استفاده کنید:
firebase database:profile --raw
خروجی خام همچنین شامل اطلاعات کلاینت برای هر عملیات، مانند رشتههای userAgent و آدرسهای IP است. برای کسب اطلاعات بیشتر در مورد عملیات مختلف ثبت شده در Firebase Realtime Database خود، به بخش Firebase Realtime Database Operation Types مراجعه کنید.
ابزار پروفایلر: ابزاری برای صدور صورتحساب نیست
از ابزار پروفایلر برای تخمین هزینه پهنای باند استفاده نکنید. ابزار پروفایلر برای ارائه تصویری کلی از عملکرد پایگاه داده شما، کمک به شما در نظارت بر عملیات و عیبیابی مشکلات در نظر گرفته شده است، نه برای تخمین هزینه. این ابزار ترافیک شبکه را در نظر نمیگیرد، فقط تخمینی از دادههای برنامه ارسال شده در پاسخها را ثبت میکند.
در زیر چند نمونه رایج از ترافیک شبکه که توسط Firebase محاسبه میشود و در پروفایل پایگاه داده شما پوشش داده نمیشوند، آورده شده است:
- سربار پروتکل: برای ایجاد و نگهداری یک جلسه، مقداری ترافیک اضافی بین سرور و کلاینتها ضروری است. بسته به پروتکل زیربنایی، این ترافیک ممکن است شامل موارد زیر باشد: سربار پروتکل بلادرنگ پایگاه داده Firebase Realtime، سربار WebSocket و سربار هدر HTTP. هر بار که اتصالی برقرار میشود، این سربار، همراه با هرگونه سربار رمزگذاری SSL، به هزینههای اتصال کمک میکند. اگرچه این مقدار معمولاً مقدار زیادی پهنای باند نیست، اما اگر بارهای داده شما کوچک باشند یا اتصالات کوتاه و مکرر برقرار کنید، میتواند قابل توجه باشد.
- سربار رمزگذاری SSL: هزینهای مرتبط با سربار رمزگذاری SSL لازم برای اتصالات ایمن وجود دارد. به طور متوسط، این هزینه تقریباً 3.5 کیلوبایت برای handshake اولیه و تقریباً 40 بایت برای هدرهای رکورد TLS در هر پیام خروجی است. برای اکثر برنامهها، این درصد کمی از صورتحساب شما را تشکیل میدهد. با این حال، اگر مورد خاص شما به تعداد زیادی handshake SSL نیاز داشته باشد، این میتواند به درصد زیادی تبدیل شود. به عنوان مثال، دستگاههایی که از بلیطهای جلسه TLS پشتیبانی نمیکنند، ممکن است به تعداد زیادی handshake اتصال SSL نیاز داشته باشند.
درباره درک و تخمین صورتحساب خود بیشتر بخوانید.