almessadi.
العودة إلى الفهرس

المشكلات الناتجة عن بدء التشغيل البارد تكون أكثر تأثيرًا عندما تؤدي الوظائف الكثير قبل تشغيل المعالج_

تأتي فترة بدء التشغيل البارد في خدمات السيرفرلس من إعداد وقت التشغيل، وتحميل التبعيات، وتهيئة التطبيق. عادةً ما ستكون الإصلاحات السريعة هي إزالة الأعمال التي تتم عند بدء التشغيل بدلاً من السعي وراء معلمة واحدة.

تاريخ النشر9 أكتوبر 2024
وقت القراءة7 min read

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

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

أين يذهب الوقت عادةً

يمكن أن يتضمن بدء التشغيل البارد:

  • تشغيل وقت التنفيذ
  • تحميل حزمة الكود
  • تحليل التبعيات
  • التهيئة العالمية
  • إعداد قاعدة البيانات أو SDK

هذا يعني أن الحزم الكبيرة والتهيئة المتعجلة عادة ما تكون أول الأماكن التي يجب النظر إليها.

نموذج أفضل

اجعل النطاق العالمي خفيفًا:

import { S3Client } from "@aws-sdk/client-s3";

const s3 = new S3Client({});

export async function handler(event: unknown) {
  return { ok: true };
}

ونقل الأعمال الثقيلة التي تحدث بشكل نادر حقًا إلى عمق مسار التنفيذ:

export async function handler(event: { mode: string }) {
  if (event.mode === "pdf") {
    const { renderPdf } = await import("./pdf.js");
    return renderPdf(event);
  }

  return { ok: true };
}

هذا لا يجعل كل طلب أسرع. إنه يجعل المسار الشائع أقل تكلفة للبدء.

المساومات

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

القراءة الإضافية