כיצד בדיקת ביצועי רשת עם iperf3 ו-netperf מזהה צווארי בקבוק
לפני שנצלול לסיבה לכך ששכפול PostgreSQL בין צמתים מפגר או מדוע העתקת קבצים מניבה 200 MB/s במקום 900 הצפויים, צריך מספרים. לא תחושות בטן, לא "זה מרגיש איטי" — אלא תפוקה, חביון ורעידות מדויקים. ללא כלים שיטתיים, מדידות כאלה הופכות לניחושים. מהנדסי DevOps המוסמכים שלנו עם שבע שנות ניסיון השלימו למעלה מ-50 פרויקטי בדיקת ביצועים ללקוחות בפינטק ובמסחר אלקטרוני. יישום בדיקות ביצועים סדירות מקצר את זמן חיפוש הבעיות ב-80%.
דוגמה עדכנית: בפרויקט של לקוח, שכפול PostgreSQL פיגר ב-20 שניות במצב סינכרוני. iperf3 הראה 8.5 Gbps על קישור 10G — בטווח התקין. אבל netperf TCP_RR החזיר רק 5,000 עסקאות/שנייה במקום 8,000 הצפויים. הסיבה הייתה חלוקת IRQ לא אופטימלית על המכונה הווירטואלית. לאחר קשירת תהליכים לליבות (taskset) והגדרת RPS, הבעיה נפתרה.
בדיקת עומס: הוראות שלב אחר שלב
- התקן את iperf3 על שני הצמתים (זמין במאגרי התוכנה).
- צד שרת:
iperf3 -s -p 5201. - לקוח: תפוקת TCP עם 4 זרמים:
iperf3 -c <IP> -t 30 -P 4. - בדיקת UDP עם רוחב פס קבוע:
iperf3 -c <IP> -u -b 1G -t 30 --length 1400. - ניתוח: השווה עם קיבולת הקישור הצפויה.
הנה ריצה בסיסית:
# на сервере iperf3 -s -p 5201
# на клиенте — TCP throughput
iperf3 -c 10.0.1.10 -p 5201 -t 30 -P 4
# UDP тест с фиксированной bandwidth (для проверки jitter и packet loss)
iperf3 -c 10.0.1.10 -u -b 1G -t 30 --length 1400הדגל # на сервере iperf3 -s -p 5201 # на клиенте — TCP throughput iperf3 -c 10.0.1.10 -p 5201 -t 30 -P 4 # UDP тест с фиксированной bandwidth (для проверки jitter и packet loss) iperf3 -c 10.0.1.10 -u -b 1G -t 30 --length 1400 מאפשר זרמים מקבילים. זרם TCP יחיד ממעט לנצל קישור 10G בשל מגבלות גודל חלון TCP. ארבעה זרמים מקבילים נותנים תמונה מציאותית.
טעות נפוצה היא הרצת הבדיקה ללא התחשבות ב-MTU. אם קיים מנהרה (GRE, VXLAN, WireGuard) איפשהו בנתיב, ה-MTU האפקטיבי יורד. בדיקה עם -P 4 (מסגרות ענק) על רשת שאינה תומכת במסגרות ענק תציג פרגמנטציה או נפילות במקום תפוקה אמיתית. שגיאה אופיינית נוספת היא התעלמות מצווארי בקבוק של CPU: בבדיקות 10G+, מכונות וירטואליות נתקלות לעיתים קרובות במגבלות vCPU או בבעיות איזון IRQ. במקרים כאלה, קשירת תהליכים לליבות (taskset) והגדרת RPS/XPS עוזרת.
netperf נוח יותר לבדיקת חביון ודפוסי RPC:
# TCP_RR — request/response latency (критично для БД)
netperf -H 10.0.1.10 -t TCP_RR -l 30 -- -r 1,1
# TCP_STREAM — throughput
netperf -H 10.0.1.10 -t TCP_STREAM -l 30 -- -m 65536--length 8972 מציג עסקאות/שנייה — מדד ש-iperf3 לא יכול לספק. עבור שכפול PostgreSQL או Redis, חשוב לדעת כמה סבבי תקשורת לשנייה הרשת יכולה לספק.
מה למדוד וכיצד לפרש
| מדד | כלי | נורמה (Ethernet 10G, אותו מדף) |
|---|---|---|
| תפוקת TCP | iperf3 # TCP_RR — request/response latency (критично для БД) netperf -H 10.0.1.10 -t TCP_RR -l 30 -- -r 1,1 # TCP_STREAM — throughput netperf -H 10.0.1.10 -t TCP_STREAM -l 30 -- -m 65536 |
9.2-9.8 Gbps |
| תפוקת TCP (מסגרות ענק 9k) | iperf3 TCP_RR |
9.7-9.9 Gbps |
| רעידות UDP | iperf3 -P 4 |
< 0.1 ms |
| חביון TCP_RR | netperf | < 0.1 ms RTT |
| אובדן מנות @ 1G UDP | iperf3 -P 4 --length 8972 |
0% |
אם התפוקה בין שני שרתים באותו VLAN מראה 4-5 Gbps במקום 9+, אבחן ברצף: -u לבדיקת המהירות המוסכמת, -u -b 1G למונה שגיאות, ethtool eth0 על החיבור הפעיל לבדיקת שידורים חוזרים של TCP ואירועי zero-window.
תעד תוצאות בפורמט מובנה — iperf3 תומך בפלט JSON (ip -s link show eth0), נוח לאוטומציה ולאחסון קו בסיס:
iperf3 -c 10.0.1.10 -t 60 -P 4 -J > baseline_$(date +%Y%m%d).json הרצת אותה פקודה ב-cron פעם ביום מספקת מגמת ביצועים היסטורית — הידרדרות הופכת למורגשת לפני שהיא הופכת לתקרית. חיסכון בזמן על אבחון יכול להגיע ל-80% עם ניטור סדיר.
מדוע כלים סטנדרטיים (ping, traceroute) אינם מתאימים להערכת ביצועים
ss -tin מציג את זמן ההקפה של מנת ICMP בודדת אך אינו מספק מידע על תפוקה או התנהגות תחת עומס מלא של הקישור. -J מציג רק את המסלול. להערכת ביצועים אמיתית, נדרשות בדיקות עומס המדמות תעבורה בפועל — TCP ו-UDP עם גדלי מנות ודפוסים שונים.
כיצד לפרש תוצאות ומתי לדאוג
בסס את ההערכה על קו בסיס שנלקח לאחר הגדרת הרשת. אם התפוקה יורדת ב-20%, בדוק הגדרות מתג, מנהרות חדשות או שינויים בהגדרות הווירטואליזציה. אם הרעידות עולות על 1 ms, חפש בעיות באגירה או עומס CPU. עבור יישומים קריטיים (מאגרי נתונים, VoIP), אנו משתמשים ב-SLOs: חביון < 0.5 ms RTT, אובדן מנות = 0%. יישום ניטור סדיר עם iperf3 ו-netperf עוזר לזהות בעיות לפני שהן מתבטאות — העלות של פתרון כזה נמוכה משמעותית מחלופות.
באיזו תדירות לבצע בדיקות ביצועים
התדירות תלויה בקריטיות המערכת. עבור סביבות ייצור, אנו ממליצים להריץ בדיקות בסיסיות (תפוקה + חביון) פעם ביום — זה תופס הידרדרות לפני תקלות. עבור dev/stage, פעם בשבוע מספיק. אוטומציה באמצעות cron ופלט ה-JSON של iperf3 הופכת את התהליך לפשוט.
השוואת כלים: iperf3 לעומת netperf
| פרמטר | iperf3 | netperf |
|---|---|---|
| מטרה עיקרית | תפוקה, רעידות, אובדן מנות | חביון בדפוסי בקשה/תגובה |
| תמיכה ב-UDP | כן | באמצעות בדיקות UDP_STREAM |
| פלט JSON | מובנה (iperf3 -c 10.0.1.10 -t 60 -P 4 -J > baseline_$(date +%Y%m%d).json ) |
רק באמצעות סקריפטים |
| זרמים מקבילים | ping |
באמצעות מספר מופעים |
| בדיקות RPC | לא | TCP_RR, UDP_RR |
מה כלול בעבודה
התקנה והגדרה של iperf3/netperf על הצמתים היעדיים. פיתוח ערכת בדיקות המותאמת לדפוסי עומס ספציפיים (תפוקה, חביון, RPC). ביצוע מדידות וקביעת קווי בסיס. פרשנות תוצאות ומתן המלצות לסילוק צווארי בקבוק. במידת הצורך, סקריפט לניטור סדיר עם שמירת היסטוריה.
לוח זמנים: 1-2 ימי עסקים בהתאם למספר הצמתים ומורכבות הטופולוגיה. העלות מחושבת באופן אישי.
צור קשר כדי לדון בפרויקט שלך ולהזמין בדיקת ביצועי רשת. מהנדסי DevOps המוסמכים שלנו עם שבע שנות ניסיון מבטיחים דיוק מדידות והמלצות מעשיות. הזמן בדיקת ביצועי רשת היום — התחל באבחון כדי למנוע השבתות.
לפי iperf3, זרמים מקבילים מגבירים תפוקה על מערכות מרובות מעבדים.







