Logo GH

اختبار الحمل والإجهاد

1) المصطلحات والأهداف

اختبار التحميل - اختبار في نطاق العمل (الهدف RPS/المنافسة) ضد SLO (على سبيل المثال، p95 <200 mm، معدل الخطأ <0. 5%).
اختبار الإجهاد - تجاوز (قبل/أكثر من تشبع وحدة المعالجة المركزية/DB/الشبكة)، ومراقبة ميكانيكا التحلل والاسترداد.
اختبار سبايك - رشقات نارية حادة (× N لدقائق).
النقع/التحمل - المدى الطويل (ساعات/يوم) للعثور على التسريبات، وانجراف GC، والتجزئة، ونمو قائمة الانتظار.
اختبار السعة - حساب هضبة الإنتاجية (نقطة التشبع) والاحتياطيات.

الأهداف: تأكيد SLO، وإصلاح الهضبة، وفهم الاختناقات، ومعايرة القياس التلقائي والحدود.

2) نموذج المرور: مفتوح مقابل مغلق

النموذج المغلق (مدفوع بالتزامن): عدد ثابت من المستخدمين الافتراضيين (VUs)، كل بعد الإجابة يجعل وقت التفكير.
النموذج المفتوح (معدل الوصول): المعدل الثابت للطلبات، بغض النظر عن الردود.

💡 للبيع، في كثير من الأحيان العالم «المفتوح» (يأتي المستخدمون فور وصولهم)، لذلك، تُعطى الأولوية لنمذجة معدل الوصول لواجهة برمجة التطبيقات/ظهور الويب.

قانون ليتل: 'L = λ W'

«L» هو متوسط عدد الطلبات التي يتم خدمتها في وقت واحد،

«λ» - شدة (RPS)،

«W» هو متوسط وقت الاستجابة.
ومن هنا جاء تقييم القدرة التنافسية اللازمة للمولد: '≈ target_RPS p95_latency' المتزامنة.

3) المقاييس: ما نقيسه

تأخير SLI: p50/p90/p95/p99 و p99 tail. 9; منفصلة عن المسارات «الساخنة» و «الباردة».
الأخطاء: «5xx»، «4xx» (صالح/غير صالح)، المهلة، تم إجهاضها.
الإنتاجية: RPS مستدامة، تيارات الإنتاجية/البايت.
الموارد: وحدة المعالجة المركزية، ذاكرة الوصول العشوائي/كومة، وقفات GC، القرص IOPS/lat، عرض النطاق الترددي للشبكة، عدد الوصلات/FD.
قوائم الانتظار و Backprescher: العمق، وقت الانتظار، عدد السقيفة/الطلبات المحدودة.
كفاءة ذاكرة التخزين المؤقت: ضرب/فشل، عواصف الإحماء.
DB/caches/الطوابير: p95 طلبات، أقفال، صراعات، استخدام مجمع.

4) المدرجات والبيانات

تكافؤ التكوين: إصدارات البرامج، حدود (uLimit، conntrack)، تهيئة JVM/GC، مجمعات.
الطوبولوجيا: LBs، CDN، WAF، TLS، نفس الشبكة «القفزات».
البيانات: التوزيعات الواقعية (أحجام الكائنات، المفاتيح «الساخنة «/» الباردة «، الإقليمية).
بداية باردة/دافئة/ساخنة: أشواط فردية ؛ تأكد من اختبار المخابئ «الباردة».
عزل الخلفية: تعطيل الوظائف/الكرونومات غير ذات الصلة أو حساب تأثيرها.

5) السيناريوهات (ملامح الحمل)

1. خط الأساس: تسارع الخطوة لاستهداف RPS، عقد 10-30 دقيقة.
2. Ramp & Hold: نمو سلس إلى X٪ أعلى من الهدف، والاحتفاظ → وتحليل الذيل.
3. سبايك: فوري × 2- × 5 رش لمدة 1-5 دقائق، ثم العودة.
4. الإجهاد إلى الفشل: خطوات إلى الفشل ؛ إصلاح نقطة فشل SLO الأولى ونقطة «كسر».
5. النقع: 6-24 ساعة مع تباين حركة المرور (ليلاً/نهارًا)، راقب الوجوه/الانجراف.
6. مختلط: مزيج من نقاط النهاية حسب التوزيع الحقيقي (Zipf/pareto)، أوزان مختلفة.

6) عملية خطوة بخطوة

حدد SLO وموجزات حركة المرور المستهدفة.
حدد نموذج التحميل (مفتوح/مغلق)، ضبط معدل الوصول أو VUs.
قم بإعداد البيانات والأوضاع «الساخنة «/» الباردة «.
قم بإعداد قياس عن بعد (مسارات/مقاييس/سجلات)، ارتباط مع تشغيل الاختبار.
الإحماء والتشغيل، وجمع القطع الأثرية (ملفات تعريف وحدة المعالجة المركزية/الأكوام، ورسوم اللهب، وشرح/السجل البطيء DB).
تحليل عنق الزجاجة، تشكيل بنود العمل.
Reprogon بعد الإصلاحات وتحديث خط الأساس وكتاب قواعد اللعبة.

7) الاختناقات والإصلاحات النموذجية

الخدمة المرتبطة بوحدة المعالجة المركزية: تحديد سمات الوظائف الساخنة → والمخصصات، والفروع ؛ تدفق، هيكل صديق للمخابئ.
الشبكة/TLS: البقاء على قيد الحياة، HTTP/2/3، تجميع الاتصال، المهلات الصحيحة، تقليل الدردشة.
DB: الفهارس، الدفعات، الاستفسارات المعدة، تجمع الاتصال، فصل R/W، تخزين النتائج، تفريغ الاستعلام.
المخابئ: الحجم، TTL، طلب الدمج، الحماية من العواصف، الاحترار، الكرات الإقليمية.
قوائم الانتظار/السماسرة: حدود القبول/التوازي، حجم الدفعات، المستهلكون الأغبياء، سقوف DLQ.
القمامة/فترات التوقف: ضبط GC، والإيجارات الاحتياطية، وتجميع الأشياء ضمن حدود معقولة.
I/O/disk: I/O غير متزامن، الضغط، ضغط الاستجابات بمستوى معقول.

8) الحدود والحماية

مهلة الميزانية: من الأعلى إلى الأسفل لتجنب السلاسل التعاقبية.
حد المعدل/دلاء الرموز: تدهور يمكن التنبؤ به بدلاً من «الموت الطويل».
قاطع الدائرة وتظليل التشبع منخفض الأولوية.
الضغط الخلفي: إشارات وتقييد التزامن في عمق السلسلة.
الحواجز: عزل البرك لنقاط النهاية الحرجة.
الخصوصية: مفاتيح التكرار الآمن تحت الرجوع.

9) الأدوات ومتى تختارها

k6 - مقتضب JS، دعم ممتاز لمعدل الوصول والتكامل والرسوم البيانية.
Gatling - Scala DSL، مولد عالي الأداء.
JMeter - نظام بيئي مرن وغني ؛ ملائمة للبروتوكولات/الملحقات.
الجراد - نصوص بايثون، مناسبة لمنطق تدفق المستخدم المعقد.
Vegeta/hey/wrk - microbenchies والنقطة تعمل على HTTP.
tc/netem، toxiproxy - حقن تحلل الشبكة.
Flamegraph/profiler - ابحث عن وحدة المعالجة المركزية/النقاط الساخنة.

10) أمثلة (رسومات)

k6 (نموذج مفتوح، مزج نقاط النهاية)

javascript import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
scenarios: {
open_model: {
executor: 'constant-arrival-rate',
rate: 800, timeUnit: '1s', duration: '20m',
preAllocatedVUs: 500, maxVUs: 2000
}
},
thresholds: {
'http_req_duration{kind:hot}': ['p(95)<200'],
'http_req_failed': ['rate<0. 005']
}
};

export default function () {
const r = Math. random();
let res;
if (r < 0. 6) {
res = http. get('https://svc/api/hot', { tags: { kind: 'hot' }});
} else if (r < 0. 9) {
res = http. get('https://svc/api/warm', { tags: { kind: 'warm' }});
} else {
res = http. post('https://svc/api/heavy', JSON. stringify({ n: 1000 }), { headers: { 'Content-Type': 'application/json' }});
}
check(res, { 'status is 2xx': (r) => r. status >= 200 && r. status < 300 });
sleep(0. 2);
}

جاتلينج (الخطوات والارتفاع)

scala setUp(
scn. inject(
rampUsersPerSec(50) to 500 during (10 minutes),
constantUsersPerSec(500) during (20 minutes),
spikeUsers(2000). during(30. seconds)
)
). protocols(http. baseUrl("https://svc"))

خطة التحميل (هيكل عظمي لـ YAML)

yaml profile: "mix-traffic"
targets:
- endpoint: GET /api/hot weight: 0. 6
- endpoint: GET /api/warm weight: 0. 3
- endpoint: POST /api/heavy weight: 0. 1 schedule:
- step: { rps: 300, hold: 10m }
- step: { rps: 600, hold: 10m }
- step: { rps: 900, hold: 10m }
guardrails:
slo:
p95_ms: 200 error_rate: 0. 5%
abort_if:
- metric: error_rate op: ">"
value: 2%
window: 2m

11) الأتمتة ودورة الحياة

Perf-smoke في كل علاقات عامة (المدى القصير لنقاط النهاية الرئيسية).
تعمل «السعة» الليلية على خشبة المسرح مع التقارير والتحف الشخصية.
البوابات في CI/CD: بناء الملف عند التراجع p95/p99> X٪ من نمو معدل الأساس أو الخطأ.
نسخ خطوط الأساس وتخزين الملامح/جرافات اللهب كقطع أثرية.
علامات الصلة: ما هي الخدمة/نقطة النهاية المغطاة، وما هو ملف المرور المستخدم.

12) الأنماط المضادة

المولد وخدمة الاختبار على نفس الجهاز → نتائج مشوهة.
النموذج المغلق فقط (VUs) لـ APIbacks → التخفيف وسوء التقدير.
يعمل على قاعدة بيانات/مخبأ فارغ دون بداية باردة.
لا توجد توزيعات واقعية (جميع الاستفسارات متشابهة).
لا يوجد قياس عن بعد (RPS/latency فقط على جانب المولد).
المقارنة بدون خطوط أساس ثابتة ومراقبة البيئة.
«التحسين» من خلال مهلة زائدة بدلاً من تصحيح السبب.

13) قائمة مرجعية للمهندس المعماري

1. SLO والحمل النموذجي/الذروة المحدد ؟

2. هل تم اختيار النموذج الصحيح (مفتوح/مغلق) ووصف ملف المرور ؟

3. الحامل مكافئ في التكوين والطوبولوجيا، هل هناك وضع بارد/ساخن ؟

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

5. يدير: خط الأساس/المنحدر/الارتفاع/الإجهاد/النقع - مغطى ؟

6. هل نقاط التشبع ثابتة وهامش الأمان مخطط ؟

7. حدود معدة، قواطع، حاجز خلفي، غباء، سياسات تظليل ؟

8. هل هناك بوابات CI لـ p95/p99 معدل الانحدار والخطأ، هل خطوط الأساس محفورة ؟

9. بعد الإصلاحات - تحديث طاقة reprogon و playbook ؟

10. تم توثيق التكبير التلقائي وخطة الطوارئ ؟

خامسا - الاستنتاج

اختبار الحمل والإجهاد ليسا «سباقات» لمرة واحدة، بل ممارسة هندسية مستمرة. نموذج حركة مرور واقعي، ومنصات صحيحة، وقياس عن بعد وأتمتة في CI/CD تحول الأداء من «السحر السري» إلى قدرة مدفوعة بالقياس: أنت تعرف مكان السقف الخاص بك، ومدى أمان المخزون وما هي التغييرات التي تحسن تجربة المستخدم حقًا.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.