این صفحه محدودیتهای مقیاسپذیر و مبتنی بر استفاده برای Cloud Functions را طبق طرح قیمتگذاری پرداخت به ازای استفاده Blaze شرح میدهد. این محدودیتها برای پروژههای Firebase که توابع را در محیط زمان اجرای Node.js 10 مستقر میکنند، اعمال میشود.
طرح Blaze تعداد زیادی فراخوانی، زمان محاسبه و ترافیک اینترنت را به صورت رایگان ارائه میدهد. با این حال، استقرار توابع هزینههای کمی برای فضای ذخیرهسازی مورد استفاده برای کانتینر تابع ایجاد میکند. برای اطلاعات بیشتر به سوالات متداول Firebase مراجعه کنید.
سهمیههای Firebase شامل ۴ حوزه میشود:
محدودیتهای منابع
این موارد بر کل منابعی که توابع شما میتوانند مصرف کنند تأثیر میگذارند.
محدودیت زمانی
اینها بر مدت زمان اجرای کارها تأثیر میگذارند.
محدودیتهای نرخ
این موارد بر سرعت فراخوانی API Firebase برای مدیریت توابع شما تأثیر میگذارند.
محدودیتهای شبکه
این موارد بر اتصال خروجی و محدودیتهای نمونه تأثیر میگذارند.
انواع مختلف محدودیتها با جزئیات بیشتر در زیر شرح داده شدهاند. تفاوتهای بین محدودیتهای Firebase (نسل اول) و Firebase (نسل دوم) در صورت لزوم ذکر شده است.
محدودیتهای منابع
محدودیتهای منابع بر کل منابعی که توابع شما میتوانند مصرف کنند تأثیر میگذارد. محدوده منطقهای به ازای هر پروژه است و هر پروژه محدودیتهای خاص خود را حفظ میکند.
سهمیه | توضیحات | محدود (نسل اول) | محدود (نسل دوم) | قابل افزایش است | محدوده |
---|---|---|---|---|---|
تعداد توابع | تعداد کل توابعی که میتوانند در هر منطقه مستقر شوند | ۱۰۰۰ | ۱۰۰۰ منهای تعداد سرویسهای Cloud Run مستقر شده | خیر | به ازای هر منطقه |
حداکثر اندازه استقرار | حداکثر اندازه یک استقرار تک تابعی | ۱۰۰ مگابایت (فشردهشده) برای منابع. ۵۰۰ مگابایت (فشرده نشده) برای منابع به علاوه ماژولها. | ناموجود | خیر | به ازای هر تابع |
حداکثر اندازه درخواست HTTP فشرده نشده | دادههای ارسالی به توابع HTTP در یک درخواست HTTP | ۱۰ مگابایت | ۳۲ مگابایت | خیر | در هر فراخوانی |
حداکثر اندازه پاسخ HTTP فشرده نشده | دادههای ارسال شده از توابع HTTP در یک پاسخ HTTP | ۱۰ مگابایت | ۱۰ مگابایت برای پخش پاسخها. ۳۲ مگابایت برای پاسخهای غیر استریمینگ. | خیر | در هر فراخوانی |
حداکثر اندازه رویداد برای توابع مبتنی بر رویداد | دادههای ارسالی در رویدادها به توابع پسزمینه | ۱۰ مگابایت | ۵۱۲ کیلوبایت برای رویدادهای Eventarc. ۱۰ مگابایت برای رویدادهای قدیمی. | خیر | به ازای هر رویداد |
حداکثر حافظه عملکرد | مقدار حافظهای که هر نمونه تابع میتواند استفاده کند | ۸ گیگابایت | ۳۲ گیگابایت | خیر | به ازای هر تابع |
حداکثر حافظه پروژه | مقدار حافظهای که یک پروژه میتواند استفاده کند (بر حسب By). این مقدار با مجموع کل حافظه درخواستی کاربر در نمونههای تابع در یک دوره ۱ دقیقهای اندازهگیری میشود. | بستگی به منطقه انتخابی دارد. این محدودیت ممکن است در مناطق با ظرفیت بالا بیشتر یا در مناطق اخیراً افتتاح شده کمتر باشد. | ناموجود | بله | به ازای هر پروژه و منطقه |
حداکثر پردازنده پروژه | مقدار CPU، بر حسب milli vCPU، که یک پروژه میتواند استفاده کند. این مقدار با مجموع کل CPU درخواستی کاربر در سراسر نمونههای تابع در یک دوره ۱ دقیقهای اندازهگیری میشود. | بستگی به منطقه انتخابی دارد. این محدودیت ممکن است در مناطق با ظرفیت بالا بیشتر یا در مناطق اخیراً افتتاح شده کمتر باشد. | ناموجود | بله | به ازای هر پروژه و منطقه |
محدودیت زمانی
سهمیه | توضیحات | محدود (نسل اول) | محدود (نسل دوم) | قابل افزایش است | محدوده |
---|---|---|---|---|---|
حداکثر مدت زمان عملکرد | حداکثر زمانی که یک تابع میتواند قبل از خاتمه اجباری اجرا شود | ۵۴۰ ثانیه | ۶۰ دقیقه برای توابع HTTP. ۶۰ دقیقه برای توابع رویداد محور. | خیر | در هر فراخوانی |
محدودیتهای نرخ
سهمیه | توضیحات | محدود (نسل اول) | محدود (نسل دوم) | قابل افزایش است | محدوده |
---|---|---|---|---|---|
فراخوانیهای API (خواندن) | فراخوانیهایی برای توصیف یا فهرست کردن توابع از طریق API Firebase | ۵۰۰۰ در ۱۰۰ ثانیه | ۱۲۰۰ در ۶۰ ثانیه | فقط برای نسل اول | به ازای هر پروژه (نسل اول) به ازای هر منطقه (نسل دوم) |
فراخوانیهای API (نوشتن) | فراخوانیها برای استقرار یا حذف توابع از طریق API Firebase | ۸۰ در ۱۰۰ ثانیه | ۶۰ در ۶۰ ثانیه | شماره ۱ | به ازای هر پروژه (نسل اول) به ازای هر منطقه (نسل دوم) |
فراخوانیهای API (CALL) | فراخوانیها به API مربوط به «call» | ۱۶ در ۱۰۰ ثانیه | ناموجود | شماره ۲ | به ازای هر پروژه |
محدودیتهای شبکه
برای اطلاعات مربوط به درخواست شبکه و محدودیتهای پهنای باند Firebase (نسل دوم)، به محدودیتهای شبکه مراجعه کنید.
محدودیتهای شبکهای زیر برای Firebase (نسل اول) اعمال میشود:
- تعداد اتصالات خروجی در هر ثانیه برای هر نمونه: ۵۰۰ (قابل افزایش نیست)
- وضوح DNS خروجی در هر ثانیه برای هر نمونه: ۱۰۰ (قابل افزایش نیست)
- حداکثر بسته در ثانیه برای هر نمونه: ۸۰،۰۰۰
- حداکثر بیت در ثانیه برای هر نمونه: ۱۰۰،۰۰۰،۰۰۰
مقیاسپذیری
Firebase که توسط HTTP فراخوانی میشود، به سرعت برای مدیریت ترافیک ورودی مقیاسپذیر میشود، در حالی که توابع پسزمینه به تدریج مقیاسپذیر میشوند. توانایی یک تابع برای مقیاسپذیری توسط چند عامل تعیین میشود، از جمله:
- مدت زمانی که طول میکشد تا اجرای یک تابع کامل شود (توابع کوتاهمدت عموماً میتوانند برای مدیریت درخواستهای همزمان بیشتر، مقیاسپذیر شوند).
- مدت زمانی که طول میکشد تا یک تابع در حالت شروع سرد (cold start) مقداردهی اولیه شود.
- نرخ خطای تابع شما.
عوامل گذرا، مانند بار منطقهای و ظرفیت مرکز داده.
سهمیههای اضافی برای توابع پسزمینه
سهمیه | توضیحات | حد | قابل افزایش است | محدوده | نسخه محصول |
---|---|---|---|---|---|
حداکثر فراخوانیهای همزمان | حداکثر تعداد فراخوانیهای همزمان یک تابع مثال: اگر مدیریت هر رویداد ۱۰۰ ثانیه طول بکشد، نرخ فراخوانی به طور متوسط به ۳۰ در ثانیه محدود خواهد شد. | ۳۰۰۰ | بله | به ازای هر تابع | فقط نسل اول |
حداکثر نرخ فراخوانی | حداکثر نرخ رویدادهایی که توسط یک تابع واحد مدیریت میشوند مثال: اگر رسیدگی به یک رویداد ۱۰۰ میلیثانیه طول بکشد، نرخ فراخوانی به ۱۰۰۰ در ثانیه محدود خواهد شد، حتی اگر به طور متوسط فقط ۱۰۰ درخواست به صورت موازی رسیدگی شوند. | ۱۰۰۰ در ثانیه | خیر | به ازای هر تابع | فقط نسل اول |
حداکثر اندازه داده رویداد همزمان | حداکثر اندازه کل رویدادهای ورودی به فراخوانیهای همزمان یک تابع واحد مثال: اگر رویدادها اندازه ۱ مگابایت داشته باشند و پردازش آنها ۱۰ ثانیه طول بکشد، نرخ متوسط ۱ رویداد در ثانیه خواهد بود، زیرا رویداد یازدهم تا زمانی که پردازش یکی از ۱۰ رویداد اول تمام نشود، پردازش نخواهد شد. | ۱۰ مگابایت | خیر | به ازای هر تابع | نسل اول و نسل دوم |
حداکثر توان عملیاتی رویدادهای ورودی | حداکثر توان عملیاتی رویدادهای ورودی به یک تابع واحد مثال: اگر رویدادها اندازه ۱ مگابایت داشته باشند، نرخ فراخوانی میتواند حداکثر ۱۰ در ثانیه باشد، حتی اگر توابع در عرض ۱۰۰ میلیثانیه به پایان برسند. | ۱۰ مگابایت بر ثانیه | خیر | به ازای هر تابع | نسل اول و نسل دوم |
وقتی به حد نصاب رسیدید
وقتی یک تابع تمام منبع اختصاص داده شده را مصرف میکند، آن منبع تا زمانی که سهمیه آن تجدید یا افزایش یابد، از دسترس خارج میشود. این ممکن است به این معنی باشد که تابع شما و تمام توابع دیگر در همان پروژه تا آن زمان کار نخواهند کرد. یک تابع زمانی کد خطای HTTP 500 را برمیگرداند که یکی از منابع از سهمیه خود فراتر رفته باشد و تابع نتواند اجرا شود.
برای افزایش سهمیهها بالاتر از مقادیر پیشفرض ذکر شده در اینجا، به صفحه سهمیههای Firebase بروید، سهمیههایی را که میخواهید تغییر دهید انتخاب کنید، روی ویرایش سهمیهها کلیک کنید، در صورت درخواست، اطلاعات کاربری خود را ارائه دهید و محدودیت سهمیه جدید را برای هر سهمیهای که انتخاب کردهاید وارد کنید.
محدودیتهای سهمیهبندی برای استقرار Firebase CLI
برای هر تابعی که Firebase CLI مستقر میکند، این نوع محدودیتهای سرعت و زمان تحت تأثیر قرار میگیرند:
- فراخوانیهای API (READ) - 1 فراخوانی در هر استقرار، مهم نیست چند تابع وجود داشته باشد
- محدودیت: ۵۰۰۰ در ۱۰۰ ثانیه
- فراخوانیهای API (WRITE) - ۱ فراخوانی برای هر تابع
- محدودیت: ۸۰ در ۱۰۰ ثانیه
همچنین به مرجع Firebase CLI مراجعه کنید.