كيفية إصلاح LIMIT_EXCEEDED في عمليات نشر Salesforce
وصلت اختبارات Apex الخاصة بعملية النشر، أو تحميل البيانات وراءها، إلى أحد حدود الحاكم أو الحدود على مستوى المؤسسة في Salesforce.
يظهر أثناء: تنفيذ اختبارات Apex أو عمليات البيانات الجماعية، وليس أثناء التحقق من صحة نشر البيانات الوصفية نفسهاالمعنى
يغطي LIMIT_EXCEEDED مجموعة من حدود Salesforce، وأكثرها شيوعًا حدود حاكم Apex مثل استعلامات SOQL، أو عبارات DML، أو وقت المعالج، التي يتم الوصول إليها أثناء تنفيذ الاختبارات التي تتطلبها عملية النشر. قد يعني أيضًا أن حدًا على مستوى المؤسسة، مثل عدد استدعاءات API اليومية أو مستلمي البريد الجماعي، قد تم تجاوزه بواسطة أتمتة تُشغّلها عملية النشر.
تُعاد حدود الحاكم لكل معاملة (100 استعلام SOQL، 150 عبارة DML، 10,000 ميلي ثانية من وقت المعالج بشكل متزامن) عند كل معاملة، لذا يشير هذا في الغالب إلى كود غير مُجمّع بكفاءة داخل معاملة واحدة، لا إلى سقف سعة حقيقي على المؤسسة.
الأسباب الشائعة
الحل
- طبّق التجميع (bulkify) على مسار الكود الذي يصل إلى الحدأعد كتابة المشغل أو الفئة أو الاختبار للعمل على مجموعات بدلاً من سجلات فردية، مما يقلل استدعاءات SOQL وDML لكل معاملة.
// Bad: SOQL inside a loop for (Account a : accounts) { List<Contact> cons = [SELECT Id FROM Contact WHERE AccountId = :a.Id]; } // Good: one query outside the loop Map<Id, List<Contact>> conMap = new Map<Id, List<Contact>>(); for (Contact c : [SELECT Id, AccountId FROM Contact WHERE AccountId IN :accountIds]) { if (!conMap.containsKey(c.AccountId)) conMap.put(c.AccountId, new List<Contact>()); conMap.get(c.AccountId).add(c); } - قلّل حجم بيانات الاختبار إلى الحد الأدنى المطلوبقلّص إعداد اختبار Apex إلى أصغر مجموعة بيانات لا تزال تُشغّل المنطق قيد الاختبار.
- تحقق من حدود المؤسسة قبل عمليات النشر الكبيرةراجع حدود API والحدود اليومية الأخرى في Setup قبل تشغيل تحميل بيانات جماعي أو عملية نشر تضيف إلى الاستخدام المُستهلك بالفعل ذلك اليوم.
إزاي Serpent بتمنع ده
يحتفظ Serpent بمؤسسات تجريبية مُجهّزة مسبقًا لعمليات التشغيل الاختباري، بحيث يواجه اختبار جماعي أو تحميل بيانات مجموعة نظيفة من الحدود بدلاً من التنافس مع كل ما يعمل بالفعل في بيئة تجريبية مشتركة. راجع مكتبة أخطاء نشر Salesforce.

الوقاية
أخطاء ذات صلة
LIMIT_EXCEEDED، تمت الإجابة
ابدأ مجانًا. بدون بطاقة ائتمان، وبدون تثبيت، وبدون التزام.
يتم الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف متخصص DevOps.
