GH GambleHub

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

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
@Gamble_GC
بدء التكامل

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

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

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