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

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

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

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

هام

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

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

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

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

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

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

هناك وضعان يتم من خلالهما تحديد تكاليفك عند تشغيل تطبيقاتك في خطة Flex Consumption. يتم تحديد كل وضع على أساس كل مثيل.

وضع الفوترة ‏‏الوصف
عند الطلب عند التشغيل في وضع الطلب ، تتم محاسبتك فقط على مقدار الوقت الذي يتم فيه تنفيذ التعليمات البرمجية للدالة على المثيلات المتوفرة. في وضع عند الطلب، لا يلزم وجود حد أدنى لعدد المثيلات. تتم محاسبتك على:

• المبلغ الإجمالي للذاكرة المقدمة بينما يقوم كل مثيل عند الطلب بتنفيذ الوظائف بنشاط (بالثوان GB)، مطروحا منه منحة مجانية تبلغ GB-s شهريا.
• العدد الإجمالي لعمليات الإعدام، مطروحا منه منحة مجانية (عدد) عمليات الإعدام شهريا.
جاهز دائما يمكنك تكوين مثيل واحد أو أكثر، تم تعيينه إلى أنواع مشغلات معينة (HTTP/Durable/Blob) ووظائف فردية، والتي تكون متاحة دائما لتكون قادرة على معالجة الطلبات. عندما يكون لديك أي مثيلات جاهزة دائما ممكنة، تتم محاسبتك على:

• إجمالي مقدار الذاكرة المتوفرة عبر جميع المثيلات الجاهزة دائما، والمعروفة باسم الأساس (بالثوان GB).
• المبلغ الإجمالي للذاكرة المقدمة خلال الوقت الذي يقوم فيه كل مثيل جاهز دائما بتنفيذ الوظائف بنشاط (بالثوان GB).
• العدد الإجمالي لعمليات التنفيذ.

في الفوترة الجاهزة دائما، لا توجد منح مجانية.

يمثل هذا الرسم التخطيطي كيفية تحديد التكاليف عند الطلب في هذه الخطة:

رسم بياني لتكاليف خطة استهلاك Flex عند الطلب استنادا إلى كل من الحمل (عدد المثيلات) والوقت.

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

هام

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

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

وضع متر منح شهرية مجانية معدلات الاستهلاك
عند الطلب وقت التنفيذ (GB-s) 100,000 $0.000016 لكل جيجابايت ثانية
عند الطلب عمليات التنفيذ (العدد) 250,000 $0.20 كل مليون عملية تنفيذ
جاهز دائما وقت الأساس (الخمول) (GB-s) - $0.000004 لكل جيجابايت ثانية
جاهز دائما وقت التنفيذ (GB-s) - $0.000009 لكل جيجابايت ثانية
جاهز دائما عمليات التنفيذ (العدد) - $0.20 كل مليون عملية تنفيذ

ضع في اعتبارك تطبيق الوظائف الذي يتكون فقط من مشغلات HTTP مع وهذه الحقائق الأساسية:

  • تعالج مشغلات HTTP 40 طلبا ثابتا في الثانية.
  • تعالج مشغلات HTTP 10 طلبات متزامنة.
  • إعداد حجم ذاكرة المثيل هو 2048 MB.
  • لا توجد مثيلات جاهزة دائما تم تكوينها، ما يعني أنه يمكن للتطبيق تغيير الحجم إلى الصفر.

في مثل هذه الحالة، يعتمد التسعير بشكل أكبر على نوع العمل الذي يتم القيام به أثناء تنفيذ التعليمات البرمجية. لنلق نظرة على سيناريوهين لحمل العمل:

  • حمل العمل المرتبط بالمعالج: في حمل العمل المرتبط بالمعالج، لا توجد ميزة لمعالجة طلبات متعددة بالتوازي في نفس المثيل. وهذا يعني أنه من الأفضل توزيع كل طلب على مثيله الخاص حتى تكتمل الطلبات في أسرع وقت ممكن دون خلاف. في هذا السيناريو، يجب تعيين تزامن مشغل HTTP منخفض ل 1. مع 10 طلبات متزامنة، يتدرج التطبيق إلى حالة ثابتة تبلغ حوالي 10 مثيلات، وكل مثيل نشط باستمرار في معالجة طلب واحد في كل مرة.

    نظرا لأن حجم كل مثيل هو ~2 غيغابايت، فإن استهلاك مثيل واحد نشط باستمرار هو 2 GB * 3600 s = 7200 GB-s، والذي عند معدل التنفيذ المفترض عند الطلب (دون أي منح مجانية مطبقة) هو $0.1152 USD لكل ساعة لكل مثيل. نظرا لأن التطبيق المرتبط بوحدة المعالجة المركزية يتم تغيير حجمه إلى 10 مثيل، فإن معدل كل ساعة الإجمالي لوقت التنفيذ هو $1.152 USD.

    وبالمثل، فإن رسوم التنفيذ عند الطلب (دون أي منح مجانية) البالغة 40 طلبا في الثانية تساوي 40 * 3600 = 144,000 أو 0.144 مليون عملية إعدام في الساعة. ثم 0.144 * $0.20تكون التكلفة الإجمالية (المجانية) لعمليات التنفيذ بالساعة هي ، وهي $0.0288 في الساعة.

    في هذا السيناريو، التكلفة الإجمالية للساعة للتشغيل عند الطلب على 10 مثيلات هي $1.152 + $0.0288 = $1.1808 USD.

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

    نظرا لأن رسوم الاستهلاك تستند فقط إلى ذاكرة كل مثيل نشط، فإن حساب رسوم الاستهلاك هو ببساطة 2 GB * 3600 s = 7200 GB-s، والذي عند معدل التنفيذ المفترض عند الطلب (دون أي منح مجانية مطبقة) هو $0.1152 USD في الساعة للمثيل الفردي.

    كما هو الحال في السيناريو المرتبط بالمعالج، فإن رسوم التنفيذ عند الطلب (دون أي منح مجانية) البالغة 40 طلبا في الثانية تساوي 40 * 3600 = 144,000 أو 0.144 مليون عملية تنفيذ في الساعة. وهذا يجعل التكلفة الإجمالية (مجانا) لعمليات التنفيذ 0.144 * $0.20بالساعة ، والتي هي $0.0288 في الساعة.

    في هذا السيناريو، التكلفة الإجمالية للساعة للتشغيل عند الطلب على مثيل واحد هي $0.1152 + $0.0288 = $0.144 USD.

عند تقدير التكلفة الإجمالية لتشغيل الوظائف في أي خطة، تذكر أن وقت تشغيل 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

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