בדיקת עומס על שרתים עם stress-ng, sysbench, fio

לאחר שדרוג או בעומס שיא, שרת עלול להתחיל להאט, לעיתים קרובות עקב בעיות נסתרות כמו התחממות יתר, זיכרון לא יציב או דיסקים חלשים. אנו מבצעים בדיקות עומס מקיפות באמצעות stress-ng, sysbench ו-fio כדי לחשוף ליקויים סמויים לפני שהם הופכים לבעיות ייצור. הצוות שלנו מספק בדיקות מפתח-ביד, החל מבחירת עומסי עבודה ועד לניתוח מדדים, ומבטיח ביצועי תשתית אמינים ויציבים.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

לאחר שדרגנו שרת מ-Intel Xeon ל-AMD EPYC, גילינו שביצועי בדיקת OLTP ירדו ב-15%. הסיבה הייתה הגבלה תרמית: המצנן הישן לא יכול היה להתמודד עם ה-TDP החדש, ולכן המעבד הפחית את התדר. בדיקת עומס עזרה לזהות את הבעיה לפני המעבר לייצור. תרחישים כאלה אינם נדירים: מערכת בעומס נמוך יכולה להסתיר פגמי קירור, חוסר יציבות זיכרון או הגדרות דיסק לא אופטימליות. במאמר זה, נראה כיצד לבצע בדיקת שרת מקיפה באמצעות stress-ng, sysbench ו-fio כדי לקבל מדדים אובייקטיביים לקבלת החלטות.

אילו כלים ולמה?

כלי מטרה מדדים מרכזיים משך בדיקה טיפוסי
stress-ng עומס על CPU, זיכרון, I/O, מתזמן bogo-ops/s, טמפרטורה, הגבלה תרמית 1-5 דקות עד לשיווי משקל תרמי
sysbench בדיקת ביצועי CPU, זיכרון, מערכת קבצים events/s, תפוקה MiB/s, זמן השהיה 30-120 שניות
fio בדיקת אחסון (IOPS, רוחב פס, זמן השהיה) IOPS, BW, זמן השהיה p99.9 60-300 שניות לכל בדיקה

מה זה bogo-ops/s והאם כדאי להסתמך עליו?

bogo-ops/s הוא מדד פנימי של stress-ng המציג את מספר הפעולות שבוצעו בשנייה. הוא שימושי להשוואה יחסית בין שתי תצורות (לדוגמה, לפני ואחרי החלפת משחה תרמית), אך אינו מספק תקן מוחלט. למדידות מדויקות, השתמשו ב-sysbench.

כיצד stress-ng מזהה הגבלה תרמית?

stress-ng הוא אולר שוויצרי לבדיקות עומס: מעל 300 סוגי stressors. לפי מחבר stress-ng Colin Ian King, לכלי יש מעל 300 stressors. בניגוד ל-burnP6, הוא יכול להעמיס על הוראות CPU ספציפיות, לגרום לתחרות זיכרון, ולבדוק הגבלה תרמית. למעשה, stress-ng יכול להעמיס על ה-CPU עד פי 3 יותר מאשר בדיקות סינתטיות שאינן מעמיסות על בקר הזיכרון.

# Стресс всех CPU-ядер через 60 секунд
stress-ng --cpu 0 --cpu-method matrixprod --timeout 60s --metrics-brief

# CPU + память одновременно
stress-ng --cpu 4 --vm 2 --vm-bytes 2G --timeout 120s

# Тест под thermal throttling (+ мониторинг температуры)
stress-ng --cpu 0 --timeout 300s & watch -n1 "sensors | grep 'Core|Package'"

# Стрессор для тестирования планировщика ОС
stress-ng --sched 4 --timeout 60s --metrics-brief

# Стресс всех CPU-ядер через 60 секунд stress-ng --cpu 0 --cpu-method matrixprod --timeout 60s --metrics-brief # CPU + память одновременно stress-ng --cpu 4 --vm 2 --vm-bytes 2G --timeout 120s # Тест под thermal throttling (+ мониторинг температуры) stress-ng --cpu 0 --timeout 300s & watch -n1 "sensors | grep 'Core|Package'" # Стрессор для тестирования планировщика ОС stress-ng --sched 4 --timeout 60s --metrics-brief משתמש בכל הליבות הזמינות. --cpu 0 מבצע פעולות מטריצה, ומעמיס מאוד על FPU וזיכרון מטמון. הדגל --cpu-method matrixprod מציג bogo-ops/s בסוף—לא מדד מוחלט, אבל נוח להשוואת תצורות.

sysbench: עומס OLTP ובדיקת זיכרון

sysbench שימש היסטורית לבדיקות MySQL/PostgreSQL, אבל בדיקות ה-CPU והזיכרון שלו שימושיות גם כן:

# CPU тест (вычисление простых чисел)
sysbench cpu --cpu-max-prime=20000 --threads=8 run

# Memory bandwidth тест
sysbench memory --memory-block-size=1K --memory-total-size=10G \
  --memory-oper=write --threads=8 run

# Тест случайного чтения/записи файловой системы
sysbench fileio --file-total-size=10G prepare
sysbench fileio --file-total-size=10G --file-test-mode=rndrw \
  --time=120 --max-requests=0 --threads=4 run
sysbench fileio --file-total-size=10G cleanup

הפלט של --metrics-brief מציג תפוקת זיכרון ב-MiB/s. ערכים טיפוסיים: DDR4-3200 בערוץ כפול נותן תיאורטית ~40-50 GB/s, sysbench אמיתי מציג 20-30 GB/s בהתאם לתבנית הגישה.

fio: בדיקת מערכת דיסק רצינית

fio הוא התקן לבדיקת אחסון. יש פרמטרים רבים, אבל המפתחיים הם:

# nvme-test.fio
[global]
ioengine=libaio
direct=1
numjobs=4
runtime=60
group_reporting

[seq-read]
rw=read
bs=1M
size=10G
filename=/dev/nvme0n1

[rand-4k-read]
rw=randread
bs=4k
size=4G
iodepth=32
filename=/dev/nvme0n1

[rand-4k-write]
rw=randwrite
bs=4k
size=4G
iodepth=32
filename=/dev/nvme0n1
fio nvme-test.fio 

מדדים קריטיים בפלט של fio:

  • IOPS: עבור 4K אקראי, NVMe SSD טוב נותן 500k+ IOPS, SATA SSD ~100k, HDD 100-200
  • BW (רוחב פס): עבור 1M רציף, NVMe 3-7 GB/s, SATA SSD ~500 MB/s
  • lat (זמן השהיה): ממוצע ו-p99.9, עבור NVMe קריאה אקראית p99.9 צריך להיות <200µs, עבור SATA SSD <1ms

# CPU тест (вычисление простых чисел) sysbench cpu --cpu-max-prime=20000 --threads=8 run # Memory bandwidth тест sysbench memory --memory-block-size=1K --memory-total-size=10G \ --memory-oper=write --threads=8 run # Тест случайного чтения/записи файловой системы sysbench fileio --file-total-size=10G prepare sysbench fileio --file-total-size=10G --file-test-mode=rndrw \ --time=120 --max-requests=0 --threads=4 run sysbench fileio --file-total-size=10G cleanup קובע את עומק התור. עבור SSD/NVMe הגדילו ל-64-128 לתפוקה מקסימלית. sysbench memory עוקף את מטמון הדפים, ובודק חומרה במקום מטמון מערכת ההפעלה.

פרמטרי fio נוספים לניתוח מעמיק: הוסיפו # nvme-test.fio [global] ioengine=libaio direct=1 numjobs=4 runtime=60 group_reporting [seq-read] rw=read bs=1M size=10G filename=/dev/nvme0n1 [rand-4k-read] rw=randread bs=4k size=4G iodepth=32 filename=/dev/nvme0n1 [rand-4k-write] rw=randwrite bs=4k size=4G iodepth=32 filename=/dev/nvme0n1 ו-fio nvme-test.fio כדי למדוד זמני השהיה באחוזונים גבוהים. שימושי גם: iodepth=32 לרישום מפורט.

כיצד לבצע בדיקת עומס מקיפה לפני ייצור?

תרחיש קבלה טיפוסי כולל שלושה שלבים:

#!/bin/bash
# Фаза 1: прогрев 10 минут под полной нагрузкой
stress-ng --cpu 0 --vm 4 --vm-bytes 1G --io 4 --timeout 600s \
  --metrics-brief 2>&1 | tee /tmp/stress-report.txt

# Фаза 2: disk I/O benchmark
fio --name=acceptance-test --ioengine=libaio --direct=1 \
  --rw=randrw --rwmixread=70 --bs=4k --numjobs=4 \
  --size=8G --runtime=120 --time_based \
  --filename=/var/lib/test-fio.dat \
  --group_reporting 2>&1 | tee /tmp/fio-report.txt

# Фаза 3: memory bandwidth
sysbench memory --memory-block-size=1M --memory-total-size=50G \
  --threads=$(nproc) run 2>&1 | tee /tmp/sysbench-report.txt

echo "Acceptance test complete. Reports in /tmp/"

במהלך שלב 1, עקבו אחר טמפרטורת CPU (direct=1), הגבלה תרמית (--lat_percentiles=1), ותדר ליבה (--percentile_list=50:90:99:99.9). אם השרת מוגבל תרמית בעומס של 80%, קיימת בעיית קירור—עדיף לגלות זאת עכשיו.

מה כולל שירות בדיקות העומס

  • בחירת תרחישים המותאמים לחומרה שלכם: CPU, RAM, דיסק, רשת
  • הכנה והרצת בדיקות עם איסוף מדדים אוטומטי
  • ניתוח תוצאות: זיהוי צווארי בקבוק, השוואה לקו בסיס
  • דוח עם גרפים (טמפרטורה, תדרים, IOPS, זמן השהיה)
  • המלצות לשיפור תצורה (במידת הצורך)
  • הדרכת הצוות שלכם להרצת בדיקות באופן עצמאי

מדדים טיפוסיים לסוגי אחסון שונים

סוג אחסון 4K אקראי IOPS 1M רציף BW זמן השהיה p99.9 (קריאה אקראית)
NVMe SSD 500k+ 3-7 GB/s <200 µs
SATA SSD ~100k ~500 MB/s <1 ms
HDD 100-200 ~200 MB/s >10 ms

לוחות זמנים ועלות

בדיקה חד-פעמית של שרת בודד עם תרחיש מוכן אורכת 2-4 שעות, עם עלויות החל מ-$500. פיתוח ערכות בדיקה ואוטומציה של בדיקות קבלה לצי שרתים אורך 1 עד 2 ימים. לקוחות בדרך כלל חוסכים עד 40% מעלויות החלפת חומרה על ידי זיהוי בעיות מוקדם. עם ניסיון של למעלה מ-5 שנים ו-30+ פרויקטי תשתית, ביצענו בדיקות עומס למערכות בעומס גבוה תחת Kubernetes ו-DBMS. צרו קשר כדי לדון בתרחיש שלכם—נעריך את הפרויקט ללא עלות.

למה להזמין בדיקות עומס מאיתנו?

ניסיון עם סוגי חומרה שונים: NVMe, SATA SSD, HDD, NUMA, ARM. אנו מבצעים אוטומציה של התהליך כך שניתן לחזור על בדיקות רגרסיה. אנו מבטיחים שתקבלו תמונת ביצועים אובייקטיבית ללא הסתרה של מטמון מערכת ההפעלה. אנו מספקים דוח מפורט וייעוץ לגבי התוצאות. קבלו ייעוץ—כתבו לנו, ונבחר את מערך הבדיקות האופטימלי למשימה שלכם.