تقدير التكاليف المستندة إلى الاستهلاك

توضح هذه المقالة كيفية تقدير تكاليف الخطة لخطط استضافة الاستهلاك واستهلاك Flex.

تقدم Azure Functions حاليا أربع خطط استضافة مختلفة لتطبيقات الوظائف الخاصة بك، مع كل خطة لها نموذج تسعير خاص بها:

الخطة ‏‏الوصف
الاستهلاك يتم تحصيل رسوم منك فقط في الوقت الذي يتم فيه تشغيل تطبيق الوظائف. تتضمن هذه الخطة منحة مجانية على أساس كل اشتراك.
خطة استهلاك Flex تدفع مقابل وقت التنفيذ على المثيلات التي تعمل عليها وظائفك، بالإضافة إلى أي مثيلات جاهزة دائما. تتم إضافة المثيلات وإزالتها ديناميكيا استنادا إلى عدد الأحداث الواردة. يدعم أيضا تكامل الشبكة الظاهرية.
بريميوم يوفر لك نفس الميزات وآلية التحجيم مثل خطة الاستهلاك، ولكن مع تحسين الأداء وتكامل الشبكة الظاهرية. تعتمد التكلفة على فئة الأسعار التي اخترتها. لمعرفة المزيد، يُرجى الرجوع إلى خطة Premium من وظائف Azure.
مخصصة (App Service)
(الفئة الأساسية أو الأعلى)
عندما تحتاج إلى التشغيل من أجهزة ظاهرية مخصصة أو منعزلة، استخدم الصور المخصصة، أو تريد استخدام سعة خطة App Service زائدة. تستخدم فوترة خطة App Service العادية. تعتمد التكلفة على فئة الأسعار التي اخترتها.

هام

خطة Flex Consumption قيد المعاينة حاليا.

يجب عليك دائما اختيار الخطة التي تدعم متطلبات الميزة والأداء والتكلفة بشكل أفضل لتنفيذ الوظائف. لمعرفة المزيد، راجع تغيير السعة واستضافة وظائف Azure.

تركز هذه المقالة على خطط الاستهلاك واستهلاك Flex لأن الفوترة في هذه الخطط تعتمد على فترات نشطة من عمليات التنفيذ داخل كل مثيل.

يمكن أيضا تشغيل Durable Functions في كل من هذه الخطط. لمعرفة المزيد حول اعتبارات التكلفة عند استخدام Durable Functions، راجع فوترة Durable Functions.

التكاليف المستندة إلى الاستهلاك

تعتمد طريقة حساب التكاليف المستندة إلى الاستهلاك، بما في ذلك المنح المجانية، على الخطة المحددة. للحصول على أحدث معلومات التكلفة والمنح، راجع صفحة تسعير Azure Functions.

يتم قياس تكلفة تنفيذ وظيفة واحدة في GB-seconds. يتم حساب تكلفة التنفيذ من خلال الجمع بين استخدام الذاكرة ووقت التنفيذ. وهي وظيفة تكلف أكثر كلما عملت لفترة أطول، مثلها مثل الوظيفة التي تستهلك ذاكرة أكبر.

ضع في اعتبارك حالة يظل فيها مقدار الذاكرة المستخدمة بواسطة الوظيفة ثابتًا. في هذه الحالة، يتم حساب التكلفة بعملية ضرب بسيطة. على سبيل المثال، لنفترض أن وظيفتك استهلكت 0.5 GB لمدة 3 ثوانٍ. وهكذا ستكون تكلفة التنفيذ هي 0.5GB * 3s = 1.5 GB-seconds.

نظرًا إلى أن استخدام الذاكرة يتغير بمرور الوقت، فإن الحساب هو جزء تكاملي من استخدام الذاكرة بمرور الوقت. يعمل النظام بهذا الحساب عن طريق أخذ عينات من استخدام الذاكرة للعملية (إلى جانب العمليات التابعة) على فواصل زمنية منتظمة. كما هو مذكور في صفحة الأسعار، يتم تقريب استخدام الذاكرة إلى أقرب مستودع 128 ميجابايت. عندما تستخدم العملية 160 ميجابايت، يتم محاسبتك على 256 ميجابايت. يراعي الحساب التزامن، وهو عمليات تنفيذ متعددة للوظائف المتزامنة في نفس العملية.

إشعار

بينما لا يتم اعتبار استخدام CPU بشكل مباشر في تكلفة التنفيذ، إلا أنه يمكن أن يكون له تأثير على التكلفة عندما يؤثر على وقت تنفيذ الوظيفة.

بالنسبة إلى وظيفة يتم تشغيلها بواسطة HTTP، عندما يحدث خطأ قبل أن تبدأ التعليمة البرمجية للوظيفة في التنفيذ، فلن يتم تحصيل رسوم منك على التنفيذ. هذا يعني أن ردود 401 من النظام الأساسي بسبب التحقق من صحة مفتاح واجهة برمجة التطبيقات أو ميزة تخويل/ مصادقة App Service لا يتم حسابها مقابل تكلفة التنفيذ. وبالمثل، لا يتم حساب استجابات رمز الحالة 5xx عند حدوثها في النظام الأساسي قبل أن تعالج وظيفتك الطلب. لا يزال يتم حساب استجابة 5xx التي تم إنشاؤها بواسطة النظام الأساسي بعد بدء تنفيذ التعليمات البرمجية للدالة كتنفيذ، حتى عندما لا يتم رفع الخطأ من التعليمة البرمجية للدالة.

عند تقدير التكلفة الإجمالية لتشغيل الوظائف في أي خطة، تذكر أن وقت تشغيل Functions يستخدم العديد من خدمات Azure الأخرى، والتي يتم إصدار فواتير كل منها على حدة. عند تقدير التسعير لتطبيقات الوظائف، فإن أي مشغلات وروابط لديك تتكامل مع خدمات Azure الأخرى تتطلب منك إنشاء تلك الخدمات الأخرى ودفع ثمنها.

بالنسبة للوظائف التي تعمل في خطة الاستهلاك، فإن التكلفة الإجمالية هي تكلفة تنفيذ وظائفك، بالإضافة إلى تكلفة النطاق الترددي والخدمات الأخرى.

عند تقدير التكاليف الإجمالية لتطبيق الوظائف والخدمات ذات الصلة، استخدم حاسبة الأسعار في Azure.

التكلفة ذات الصلة ‏‏الوصف
حساب التخزين يتطلب كل تطبيق وظائف أن يكون لديك حساب تخزين Azureمرتبط للأغراض العامة، والذي تتم إصدار فواتير له بشكل منفصل. يتم استخدام هذا الحساب داخليًا بواسطة وقت تشغيل Functions، ولكن يمكنك أيضًا استخدامه لروابط ومشغلات التخزين. إذا لم يكن لديك حساب تخزين، يتم إنشاء حساب لك عند إنشاء تطبيق الوظائف. لمعرفة المزيد، راجع متطلبات حساب التخزين.
Application Insights تعتمد الوظائف على Application Insights لتوفير تجربة مراقبة عالية الأداء لتطبيقات الوظائف. ينبغي تمكين تكامل Application Insights، على الرغم من أن ذلك ليس مطلوبًا. يتم إدراج منحة مجانية لبيانات تتبع الاستخدام كل شهر. لمعرفة المزيد، راجع صفحة أسعار Azure Monitor.
النطاق الترددي للشبكة يمكنك تحمل تكاليف نقل البيانات اعتمادا على اتجاه وسيناريو حركة البيانات. لمعرفة المزيد، راجع تفاصيل أسعار النطاق الترددي.

السلوكيات التي تؤثر على وقت التنفيذ

يمكن أن تؤثر السلوكيات التالية لوظائفك على وقت التنفيذ:

  • المشغلات والروابط:الوقت المستغرق لقراءة الإدخال من روابط الوظائف وإخراج الكتابة إليها يتم احتسابه كفترة تنفيذ. على سبيل المثال، عندما تستخدم الوظيفة ربط إخراج لكتابة رسالة إلى قائمة انتظار تخزين Azure، يشتمل وقت التنفيذ على الوقت المستغرق لكتابة الرسالة إلى قائمة الانتظار، والتي يتم تضمينها في حساب تكلفة الوظيفة.

  • التنفيذ غير المتزامن: يتم احتساب الوقت الذي تنتظره الوظيفة لنتائج طلب غير متزامن (await في C#) كوقت تنفيذ. يعتمد حساب GB-second على وقت بدء الوظيفة ووقت انتهائها واستخدام الذاكرة خلال تلك الفترة. ما يحدث خلال ذلك الوقت من حيث نشاط CPU لا يتم احتسابه ضمن الحساب. قد تتمكن من تقليل التكاليف في أثناء العمليات غير المتزامنة باستخدام Durable Functions. لا يتم تحصيل رسوم منك على الوقت الذي تقضيه في الانتظار في وظائف المُنسق.

في الفاتورة، يمكنك عرض البيانات المتعلقة بالتكلفة الخاصة بـ إجمالي عمليات التنفيذ - Functions ووقت التنفيذ - Functions، بالإضافة إلى التكاليف الفعلية التي تمت فوترتها. ومع ذلك، فإن بيانات الفاتورة هذه عبارة عن مجموع شهري لفترة فاتورة سابقة.

قياسات الوظائف على مستوى التطبيق

لمعرفة تأثير تكلفة الوظائف بشكل أفضل، يمكنك استخدام Azure Monitor لعرض القياسات المتعلقة بالتكلفة التي يتم إنشاؤها حاليًا بواسطة التطبيقات.

استخدم مستكشف قياسات المراقبة في Azure لعرض البيانات المتعلقة بالتكلفة لتطبيقات وظيفة خطة الاستهلاك بتنسيق رسومي.

  1. انتقل إلى تطبيق الوظائف الجديد في مدخل Azure.

  2. في اللوحة اليسرى، مرر لأسفل إلى Metric واختر Metrics.

  3. من Metric، اختار Function Execution CountوSum لـAggregation. يؤدي هذا إلى إضافة مجموع عدد عمليات التنفيذ خلال الفترة المختارة إلى الرسم البياني.

    تحديد مقياس تطبيق الوظائف لإضافته إلى المخطط البياني

  4. حدد Add metric وكرر الخطوات من 2 إلى 4 لإضافة وحدات تنفيذ الوظائف إلى المخطط البياني.

يحتوي الرسم البياني الناتج على الإجماليات لكلا مقياسي التنفيذ في النطاق الزمني المختار، والذي يكون في هذه الحالة ساعتين.

رسم Microsoft Azure Active Directory Graph لأعداد تنفيذ الدوال ووحدات التنفيذ

نظرًا لأن عدد وحدات التنفيذ أكبر بكثير من عدد التنفيذ، فإن المخطط البياني يعرض فقط وحدات التنفيذ.

يعرض هذا المخطط البياني ما مجموعه 1.11 مليار Function Execution Units مستهلك في فترة ساعتين، يقاس بالميغابايت في المللي ثانية. للتحويل إلى غيغابايت بالثواني، اقسم على 1024000. في هذا المثال، استهلك التطبيق الخاص بالوظائف1110000000 / 1024000 = 1083.98 جيجابايت-في الثانية. يمكنك أخذ هذه القيمة وضربها في السعر الحالي لوقت التنفيذ في Functions pricing page، والتي تمنحك تكلفة هاتين الساعتين، بافتراض أنك استخدمت بالفعل أي منح مجانية لوقت التنفيذ.

القياسات على مستوى الوظيفة

وحدات تنفيذ الوظائف هي مزيج من وقت التنفيذ واستخدام الذاكرة، ما يجعله قياسًا صعبًا لمعرفة استخدام الذاكرة. بيانات الذاكرة ليست مقياسًا متوفرًا حاليًا من خلال مراقبة Azure. ومع ذلك، إذا كنت ترغب في تحسين استخدام الذاكرة لتطبيقك، فيمكنك استخدام بيانات عدّاد الأداء التي تم تجميعها بواسطة Application Insights.

إذا لم تكن قد أجريت ذلك بالفعل، يمكنك تمكين تطبيق Application Insights في تطبيق الوظائف. مع تمكين هذا التكامل، يمكنك الاستعلام عن بيانات تتبع الاستخدام هذه في المدخل.

يمكنك استخدام مستكشف مقاييس مراقبة Azure في مدخل Azure أو واجهات برمجة تطبيقات REST للحصول على بيانات مقاييس المراقبة.

تحديد استخدام الذاكرة

ضمن Monitoring، قم بتحديدLogs (Analytics)، ثم انسخ استعلام القياس عن بعد التالي والصقه في نافذة الاستعلام وحدد Run. يقوم هذا الاستعلام بإرجاع إجمالي استخدام الذاكرة في كل وقت يتم أخذ عينات منه.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

تبدو النتائج مثل المثال التالي:

الطابع الزمني [التوقيت العالمي المتفق عليه] الاسم قيمة
9/12/2019, 1:05:14.947 AM وحداتِ البايت الخاصة 209932288
9/12/2019, 1:06:14.994 AM وحداتِ البايت الخاصة 212189184
9/12/2019, 1:06:30.010 AM وحداتِ البايت الخاصة 231714816
9/12/2019, 1:07:15.040 AM وحداتِ البايت الخاصة 210591744
9/12/2019, 1:12:16.285 AM وحداتِ البايت الخاصة 216285184
9/12/2019, 1:12:31.376 AM وحداتِ البايت الخاصة 235806720

حدد المدة

يقوم جهاز مراقبة (Azure Monitor) بتتبع القياسات على مستوى الموارد، والتي بالنسبة للوظائف هي Function App. يقوم تكامل Application Insights بإصدار القياسات على أساس كل وظيفة. فيما يلي مثال لاستعلام تحليلات للحصول على متوسط ​​مدة الوظيفة:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
الاسم averageDurationMilliseconds
QueueTrigger AvgDurationMs 16.087
QueueTrigger MaxDurationMs 90.249
QueueTrigger MinDurationMs 8.522

الخطوات التالية