Spring Boot / المتقدم: المراقبة والإصدارات المتينة / الدرس 14
الأداء وشكل الاستعلام والسعة
حلل طلب Boot عبر التطبيق والاستمرارية والمنفذ والمجمع و JVM بدليل متكافئ لا وصفة ضبط عامة.
في هذه الصفحة
أهداف الدرس
- تمييز التأخر والإنتاجية وتشبع الموارد.
- مراجعة جلب JPA وحجم النتيجة.
- قياس عمل واقعي دون تغيير ضمان الصحة.
حدد التراجع قبل تغيير المجمع
سجل العملية والحمل والحجم وفئة المعلمة وتوزيع التأخر والإنتاجية والأخطاء. قد يضم زمن الطلب المرشح والطابور وانتظار الاتصال و SQL والتسلسل والتابع والاستهلاك؛ ولا يشرح قياس دالة سريعة وحدها المسار. افصل الإحماء والبدء عن مقارنة مستقرة.
قد تضخم زيادة الخيوط أواتصالات القاعدة تشبع التابع. حدد النادر وما يحتفظ به؛ فقد تخلق معاملة تمتد عبر تسلسل أواتصال بطيء تنازعاً رغم فهرسة SQL. حافظ في المقارنة على التفويض والاتساق والدوام والخرج، وإلا قست خدمة مختلفة لا تحسيناً.
اختر شبكة البيانات التي تحتاجها الحالة
قد يولد اجتياز كسول قائمةً بقراءة علاقة لكل صف. قد يعالج إسقاط أو EntityGraph أوجلب مراجع شكلاً معيناً، لا توصية بجعل الكل eager. يختار الجزء علاقة عميل مفردة لطلب سياقي ويظل يحتاج صفحة محدودة مرتبة وتحويل DTO؛ ولم ينفذ استعلام.
قد تكون لجلب مجموعة مع الصفحات عواقب موفر ولهجة منها عمل في الذاكرة أوتركيب غير مدعوم. افحص SQL والتعددية والعد فعلاً. لا تثبت صفحة JSON صحيحة استعلاماً واحداً كفؤاً، ولا تسرب الشبكة الكسولة لتأجيل قرار نموذج القراءة.
package training.catalog;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
interface OrderReadRepository extends JpaRepository<OrderHeader,Long> {
@EntityGraph(attributePaths="customer")
Page<OrderHeader> findByTenantId(String tenantId, Pageable pageable);
}
يلزم أن يعرّف OrderHeader العلاقة؛ وتحتاج الصفحة والنطاق والتحويل و SQL تحققاً دون ادعاء سرعة أوعدد.
احفظ التكرار المقصود وتجنب العمل الزائد
يطلب النموذج العنصر 1 مرتين و 2 مرة، فيحمّل المفاتيح المختلفة إلىخريطة مصطنعة ثم يعيد ترتيب الطلب وتكراره. ينتج نداءين ممثلين وثلاث نتائج؛ وهو دليل تخطيط لااستعلام JPA دفعي أوتسارع شبكة.
تحتاج الدفعة الفعلية حدود معلمات وذاكرة وسياسة غياب وإعادة ترتيب وتفويض. قد يغير تحويل القائمة لمجموعة التكرار المشروع، وتتجاوز IN غير المحدودة السعة. افحص العدد والعمل بالمنظومة المقصودة؛ فلا تعادل قلة نداء Java ضمان نقص زمني متناسب.
public class Main {
public static void main(String[] args) throws Exception {
var requested=java.util.List.of(1,1,2);
var fetched=new java.util.HashMap<Integer,String>();
int loads=0;
for(int id:new java.util.LinkedHashSet<>(requested)) { loads++; fetched.put(id,"item-"+id); }
var result=requested.stream().map(fetched::get).toList();
System.out.println("lookup_calls "+loads);
System.out.println(result);
}
}
lookup_calls 2
[item-1, item-1, item-2]
يعيد تحميلان ثلاث نتائج بالترتيب والتكرار ولا ينفذ مستودعاً.
اربط المجمع والتخصيص وانتظار التابع
قارن فترات متكافئة لانتظار المجمع والطابور و SQL والحجم والتخصيص والجامع والمهلة. قد يكون الامتلاء بطئاً أوتسرب ملكية لا سبباً لتكبير بلا حد. وضح العمر وافحص الفشل والإلغاء.
للتحليل كلفة وقد يلتقط حساساً؛ استخدم إجراء معتمداً ولا تتصل بخدمة مهيأة للدرس. قد تهيمن JVM والذاكرة على قياس ضئيل، ولا تختلق إنتاجية أومئيناً من النموذج. كما لا تفسر خطة SQL صحيحة وقت انتظار اتصال قبلها؛ فالمقاييس أدلة مترابطة لا بدائل متساوية.
تحقق من فرضية واحتفظ بمعيار رجوع
غيّر جلباً أوحداً أوفهراً أو سعة مبررة وافحص النتائج نفسها باختبار ممثل مخول، شاملاً الشائع والنادر والفشل والكتابة. سجل الإصدارات والتوزيع وتعريف المقياس؛ فقد يضر تحسين قراءة نادرة بكل كتابة.
لا تعطل أماناً أومعاملة أودواماً أوتحققاً لكسب قياس دون الاعتراف بتغيير الخدمة. احفظ الرجوع والاسترداد، ووثق العمل المخفض والافتراض والدليل ومعيار الرجوع. هذه معرفة أبقى من لقطة زمنية مبهرة لا يقدر المراجع على تكرارها أوفهم حدودها.
الأخطاء الشائعة وإصلاحها
لم يفسر اختبار مستودع سريع بطء HTTP.
- لماذا يحدث؟
- أُهمل الانتظار أوالتسلسل أوالتابع.
- كيف تصلحه؟
- قس المسار واربط مكوناته.
- كيف تتجنب تكراره؟
- طابق النطاق والحمل.
أفسد الجلب المبكر للمجموعة الصفحات.
- لماذا يحدث؟
- أُهملت التعددية والموفر.
- كيف تصلحه؟
- اختر جلباً مراجعاً وافحص SQL.
- كيف تتجنب تكراره؟
- اختبر آباء بعدة أبناء.
ضخّم مجمع أكبر الفشل.
- لماذا يحدث؟
- بقيت سعة التابع ثابتة وزاد القبول.
- كيف تصلحه؟
- أصلح الاختناق وقيد القبول.
- كيف تتجنب تكراره؟
- اختبر الامتلاء والتنظيف.
اختبر فهمك
1. لماذا تغير مجموعة بدل[1,1,2] العقد؟
اعرض الحل المشروح
قد يتعمد الطلب التكرار والترتيب. اجلب المختلف ثم أعد النتيجة المطلوبة وحدد الغائب، ولا تحول سؤال قائمة إلى كيانات فريدة خفية.
2. ماذا تفحص لمجمع ممتلئ ومعالج منخفض؟
اعرض الحل المشروح
الملكية والمدة وانتظار القاعدة والتابع والطابور والتنظيف. لا يثبت المعالج المنخفض سعة تابعة؛ اختبر فرضية محدودة بأدلة الفترة نفسها.
أهم ما تعلمته
- حسن العمل الكامل بعقد صحة ثابت.
- يحتاج الجلب وتعددية الرد اختباراً مقصوداً.
- السعة اختيار لا علاج تأخر عام.