كيفية إصلاح REQUEST_LIMIT_EXCEEDED في عمليات نشر Salesforce

استنفدت المؤسسة مخصصات طلبات API الخاصة بها، لذا تُرفض الاستدعاءات الإضافية، بما فيها عمليات النشر، حتى إعادة التعيين.

يظهر أثناء: أي استدعاء API، فور استنفاد مخصصات المؤسسة المتجددة على مدار 24 ساعة

المعنى

يعني REQUEST_LIMIT_EXCEEDED أن المؤسسة استنفدت حد طلبات API الخاص بها، وعادة ما يكون المخصص المتجدد على مدار 24 ساعة، لذا تُرفض الاستدعاءات الإضافية عبر REST أو SOAP أو Bulk API حتى يُعاد ضبط الاستخدام أو يُرفع الحد. إنه سقف على مستوى المؤسسة بأكملها، لذا يمكن أن تُسبّبه أي مجموعة من التكاملات، لا خط أنابيب النشر وحده.

يتغير المخصص بحسب الإصدار وعدد المستخدمين المرخّصين، لذا يمكن أن تصل sandbox من نوع scratch org أو Developer Edition ذات مخصص ثابت صغير إلى هذا السقف بسبب خط أنابيب CI مُصمَّم بحجم الإنتاج، قبل أن يصل الإنتاج نفسه إليه بوقت طويل.

التشخيص

الأسباب الشائعة

خط أنابيب CI يستطلع الحالة بعدد كبير من الاستدعاءات الصغيرة
يتحقق خط الأنابيب من حالة النشر أو المهمة عبر طلبات API فردية متكررة بدلًا من تجميعها أو توزيعها زمنيًا.
تكاملات أخرى تشارك الحد اليومي نفسه
تستهلك أنظمة أخرى متصلة بالمؤسسة معظم مخصصات API المشتركة قبل تشغيل استدعاءات النشر نفسها.
الحد الأدنى لـ scratch org أو sandbox أقل من الإنتاج
يستنفد خط أنابيب مُصمَّم لحجم استخدام الإنتاج المخصص اليومي الأصغر لـ API الخاص ببيئة أدنى مستوى.

الحل

  1. اجمع الاستدعاءات باستخدام Bulk API أو الطلبات المركّبة
    استبدل استدعاءات REST الفردية عالية التكرار بواجهة Bulk API أو Composite API لتقليل إجمالي عدد الطلبات.
  2. راقب الاستخدام ووزّع المهام الثقيلة زمنيًا
    تحقق من استخدام API ضمن Setup، System Overview، وجدول المهام الثقيلة لتجنب تراكمها فوق تكاملات أخرى.
    sf data query --query "SELECT ApiCurrentUsage, ApiRequestsPerDay FROM OrganizationLimits" --target-org myOrgAlias --use-tooling-api
  3. اطلب زيادة الحد حيث يكون الاستخدام مرتفعًا فعلًا
    بالنسبة إلى المؤسسات التي يقترب فيها استخدام حقيقي ومستمر من السقف بانتظام، اطلب زيادة حد API من Salesforce.
من واقع الاستخدام

إزاي Serpent بتمنع ده

يُجمّع Serpent الاتصالات ويعيد استخدامها عبر بيئات الفريق بدلًا من فتح جلسة جديدة كثيرة الاستدعاءات لكل مهمة، مما يُبقي استخدام API أقل من مجموعة من مهام CI مكتوبة بشكل مستقل تستدعي المؤسسة نفسها. طالع مكتبة أخطاء نشر Salesforce.

لوحة الإصدارات مع تنبيهات التعارض في Serpent

الوقاية

استطلع حالة النشر بتراجع أسّي (exponential backoff)، لا بفواصل قصيرة ثابتة
باعد بين استدعاءات فحص الحالة بتأخير متزايد بدلًا من الاستطلاع كل بضع ثوانٍ، فذلك يستنفد المخصص اليومي بسرعة في عمليات النشر الطويلة.
تتبّع استخدام API لكل تكامل، لا على مستوى المؤسسة فقط
حدّد أي تطبيق متصل أو حساب خدمة يستهلك أكبر عدد من الاستدعاءات، بحيث يُكتشف تكامل خارج عن السيطرة قبل أن يُجوّع خط أنابيب النشر.
اضبط حجم استدعاءات CI بما يتناسب مع المخصص الفعلي للبيئة
تحقق من حد API اليومي المحدد لـ scratch org أو sandbox قبل افتراض أن خط أنابيب بحجم الإنتاج سيتناسب معه.
أسئلة شائعة

REQUEST_LIMIT_EXCEEDED، بالشرح

هل يُعاد ضبط هذا الحد عند منتصف الليل بتوقيت منطقة مؤسستي؟
إنها نافذة متجددة مدتها 24 ساعة تعتمد على الاستخدام، لا إعادة ضبط ثابتة عند منتصف الليل، لذا يعتمد وقت إعادة الضبط الدقيق على وقت إجراء الاستدعاءات أصلًا.
هل تُحتسب واجهة Metadata API المستخدمة في عمليات النشر ضمن الحد نفسه لاستدعاءات REST API؟
نعم. تستمد استدعاءات Metadata API وREST وSOAP وBulk وTooling API جميعها من المخصص اليومي نفسه على مستوى المؤسسة، لذا يمكن لتكامل بيانات ثقيل أن يستنفد الحد الذي لن تتمكن عملية النشر بعدها من استخدامه.
هل يمكنني التحقق من استدعاءات API المتبقية قبل بدء عملية النشر؟
نعم، استعلم عن كائن OrganizationLimits عبر Tooling API، أو تحقق من Setup، System Overview، لمعرفة الاستخدام الحالي والمخصص اليومي قبل بدء مهمة كبيرة.

ابدأ مجانًا. دون بطاقة ائتمان، دون تثبيت، ودون التزام.

الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف مختص DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.