GH GambleHub

בדיקת עומס ולחץ

בדיקת מתח ולחץ

1) למה אתה צריך את זה

מטרות:
  • אישור קיבולת (כמה הפעלות RPS/תחרותיות המערכת תעמוד ב-SLO).
  • מצא צווארי בקבוק (CPU/IO/DB/רשתות/מנעולים/בריכות).
  • הגדרת תקציבי ביצועים ושערים ב CI/CD.
  • הפחת את הסיכון של שחרור (רגרסיה p95/p99, צמיחת שגיאות שיא).
  • קיבולת/עלות תוכנית (קנה מידה החוצה ועתודות).

2) סוגים של בדיקות perf

עומס: תנועה מציאותית קרובה לפסגות; אימות SLO.
מתח: גדילה ל/מעל גבול התנהגות השפלה.
ספייק: קפיצת עומס מהירה * גמישות/אוטוסקלה.
Soak/Endurance: שעות/יום דליפות, פיצול, סחף.
קיבולת/Scalability: כיצד תפוקה/latency משתנה עם scale-out; חוק אמדל/גוסטפסון.
”עשן” קצר רץ על כל שחרור (ביצועים מכובדים).

3) דגמי דור התנועה

Fixed VOS/concurrency: ”N” משתמשים, כל ביצוע בקשות לתור acw על הלקוח. סיכון של הסתרת עומס יתר.
קצב הגעה: זרימה של יישומים בעלי עוצמה תורשתית (req/s), כמו בחיים האמיתיים. נכון יותר עבור ממשקים ציבוריים.

חוק ליטל: ”L = העשרה × W”.
עבור בריכה/שירות, מינימום מקביליות institute 'oxW' (להוסיף 20-50% של מלאי).
איפה ש ”ערבות” היא תפוקה, ”W” הוא זמן השירות הממוצע.

4) טען פרופילים ותרחישים

תערובת מסע משתמש: מניות של תסריטים (התחברות, עיון, הפקדה, קופה...).
זמן-מחשבה: הפסקה של המשתמש (הפצות: אקספוננציאלי/לוגנורמלי).
פרופיל נתונים: גודל התגובות, המטען, השונות של הפרמטרים.
מתאם: שלבי קישור (עוגיות/אסימונים/זיהוי) כמו בזרימה אמיתית.
מטמון קר/חם/חם: ריצות בודדות.
קרא נגד כתב: איזון של קריאות/רישומים, אידמפוטנטיות למגשים מחדש.
רב-אזור: RTT, הפצה על ידי POP/ASN.

5) סביבת בדיקה

בידוד: הדוכן קרוב למכפלה בטופולוגיה/הגדרות (אך לא ”לנצח” את המוצר).
נתונים: מיסוך מח "ש, כרכים, מדדים כמו במכירות.
טען גנרטורים: אל תנוח מול הרשת/מעבד; רצים מבוזרים, סנכרון זמן.
יכולת תצפית: מדדים/שבילים/רישומים, סינתטיים בהיקף, יצוא פרופילי מעבד/היפ.

6) מדדים ו ־ SLI

דרך: RPS/Transactions/second

Latency: p50/p95/p99, TTFB, זמן שרת נגד רשת.
שגיאות: נתח של שגיאות 5xx/4xx/domain.
רוויה: CPU, load avg, GC, disk Iops/latency, network, pool wait.

Business SLI: 5S President President President Service

קח את הסף מ-SLO (לדוגמה, "99. 95% מים 300 ms"), לפקח שרפה קצב במהלך הריצה.

7) מציאת צווארי בקבוק (טכניקה)

1. מחממים את המערכת באופן עקבי ב-60-80% מעומס המטרה.
2. הגדלת השלבים (ramp) * תיקון שבו p95/p99 וקצב השגיאה גדלים.

3. התאמת יתדות p99 ל:
  • תורים בבריכות (DB/HTTP),
  • צמיחה של WAIT/Locks (DB),
  • GC-pauses/heap,
  • רשת מתוצרת מחדש/אובדן מנות,
  • דיסק/מטמון מפספס.
  • 4. מיקום: חיפוש בינארי לפי נתיב שאילתה, פרופילים (CPU/alloc/lock-profile).
  • 5. תקן את ה ”בקבוק”. כוונון כפול חוזר על הריצה.

8) התנהגות תחת לחץ

השפלה חיננית: גבולות, מפרי מעגל חשמלי, תורים לתרמילי גב, המקובלים לעיבוד.
מגשים מחדש: מקסימום 1, אידמפוטנט בלבד; ג 'יטר; תקציב המגש צבר 10% מ-RPS.
כשל פתוח/כשל סגור: עבור תלות שאינה קריטית, לאפשר אל-כשל פתוח (מטמון/מטמון).
כשל מדורג: בידוד בריכות/מכסות (מחיצה), פסקי זמן מהירים, ניתוק חלק של פונקציות (דגלים).

9) כלים (בחירה למשימה)

K6 (JavaScript, open/open-model, מהיר, נוח ב CI).
JMeter (עשיר במערכת אקולוגית, GUI/CLI, תוספים, אך כבדים יותר).
גאטלינג (סקאלה DSL, ביצועים גבוהים).
ארבה (פייתון, גמישות תסריט).
וג 'יטה/היי/ורוק (מיקרו-ספסלים ובדיקה מהירה).

חוק: כלי אחד ”ראשי” + קליל CLI לעט עשן ביחסי ציבור.

10) דוגמאות (קטעים)

10. 1 k6 (מודל פתוח עם קצב הגעה)

js import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
scenarios: {
open_model: {
executor: 'ramping-arrival-rate',
startRate: 200, timeUnit: '1s',
preAllocatedVUs: 200, maxVUs: 2000,
stages: [
{ target: 500, duration: '5m' },  // до 500 rps
{target: 800, duration: '5m'} ,//stress
{ target: 0,  duration: '1m' }
]
}
},
thresholds: {
http_req_duration: ['p(95)<300', 'p(99)<800'],
http_req_failed: ['rate<0. 005'],
},
};

export default function () {
const res = http. get(`${__ENV. BASE_URL}/api/catalog? limit=20`);
sleep(Math. random() 2); // think-time
}

10. 2 JMeter (רעיון פרופיל)

Truad Group + Steping Thread Surrency Thread (דמוי פתח).
מחדל בקשת HTTP, מנהל עוגיות, מערך נתונים CSV.
Backend Listener # InfluxDB/Grafana; טענות לפי זמן/קוד.

10. 3 ארבה (פייתון)

python from locust import HttpUser, task, between class WebUser(HttpUser):
wait_time = between(0. 2, 2. 0)
@task(5)
def browse(self): self. client. get("/api/catalog? limit=20")
@task(1)
def buy(self): self. client. post("/api/checkout", json={"sku":"A1","qty":1})

11) נתונים, מתאם, הכנה

נתוני זרעים: ספריות, משתמשים, מאזנים, אסימונים - כמו במכירות.
מסווה/אנונימיות PII; יצירת סינתטים על גבי הפצות אמיתיות.
קורלציה: לחלץ תעודות זהות/אסימונים מהתגובות (RegExp/JSONPath) ולהשתמש בצעדים הבאים.

12) יכולת תצפית במהלך הריצות

לוחות מחוונים אדומים (קצב, טעויות, משך) לאורך המסלולים.
מופת - מעבר ממטרים לעקבות (trace_id).
יומני שגיאה: דגימה + צבירה, שכפול/אידמפוטנציה.
מערכת: מעבד/GC/ערימה, דיסקים/רשת, המתנת בריכה.
שאילתות עליונות, מנעולים, סריקות אינדקס, בלוט.

13) אוטומציה ושערי ביצועים

מודיע: ריצות קצרות על מיזוג (למשל. k6 2-3 דקות) עם סף.
לילה/שבועי: ספוג/לחץ ארוך במדיום נפרד; דיווחים ומגמות.
קנרית משחררת: ניתוח של SLO (שיעור שגיאה, p95) בתור ”השער” של הקידום.
רגרסיות: קו בסיס נגד מבנה גוף נוכחי; התראה בהידרדרות> X%.

14) תכנון קיבולת ועלות

הפקת עקומות * latency: להגדיר נקודת ברך - לאחר שהוא p99 גדל בחדות.
קנה מידה: מדידת יעילות הדירוג (RPS delta/node delta).
עלות: ”RPS לדולר/שעה”, רזרבה לאירועי שיא + DR-reserve.

15) אנטי דפוסים

הכה לתוך הדרבן ללא שליטה או מבחן בסביבה ”ריקה”, לא כמו הדרבן.
דגם סגור עם חיילים משוחררים מסתתרים.
מחסור במחשבה/מידע * מטמון לא מציאותי פוגע, או להפך - סערה למקור.
תסריט ”/פינג ”אחד במקום זרימה מותאמת אישית.
חוסר יכולת הבחנה: ”אנחנו רואים רק RPS ועיכוב ממוצע”.
מגשים מחדש בלתי מבוקר * DDOS עצמי.
ערבוב הבדיקה והמיטיביות ללא תיקון השערות/שינויים.

16) רשימת בדיקות (0-30 ימים)

0-7 ימים

הגדרת SLI/SLO ופרופילי תנועה למטרה (מיקס, זמן-מחשבה, נתונים).
בחר את הכלי (k6/JMeter/Locust), העלה את לוחות המחוונים של RED.
הכינו את נתוני הדוכן והזרעים, בטלו את גבולות הצד השלישי/קפטצ 'ה.

8-20 ימים

לבנות תרחישים: מודל פתוח (קצב הגעה), מטמון קר/חם/חם.
הפעל עומס # לחץ _ ספייק; לתקן נקודת ברכיים וצווארי בקבוק.
יישום שערי ביצועים ב CI (מיקרו-run).

21-30 ימים

בדיקת השריה 4-24: דליפות ג 'י-סי/סחף, ייצוב.
מגבלות מסמך, תוכנית קיבולת, איורים של RPS * p95/oshibki.
הכינו את הספר ”כיצד להגדיל את הגבולות/הסולם” ו ”כיצד להשפיל”.

17) מדדי בגרות

ישנם פרופילים ריאליסטיים (מיקס, זמן-מחשבה, נתונים) שמכסים 80% מהתנועה.
לוחות מחוונים אדומים + איתור מחוברים לכל הבדיקות.
בלוק שערי ביצועים משחרר בעת נסיגת p95/שגיאות.
קיבולת ונקודת ברך מתועדים על ידי שירותי מפתח.
ריצות ספוג/לחץ חודשיות ודוחות התקדמות.
ההתנגדות ל ”ספייק” מאושרת על ידי אוטוסקלה והיעדר מפל-נכשל.

18) מסקנה

בדיקת עומס היא תרגול הנדסי רגיל, לא מדידה חד פעמית. "משתמשים אמיתיים במודל (מודל פתוח), מודדים את מה שמשקף את חוויית הלקוח (SLI/SLO), שומרים על יכולת תצפית ושערים ב CI/CD, מנהלים ריצות לחץ/ספייק/ספייק ולתקן את נקודת הברך. ואז אירועי שיא וברבורים שחורים הופכים לתרחישים הניתנים לניהול, וביצועים הופכים לפרמטר צפוי ומודד של הפלטפורמה שלך.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.