תארו לעצמכם: חנות ה-Bitrix שלכם עובדת כרגיל, אבל בסביבות שעת הצהריים האתר מתחיל להאט — עמודים נטענים תוך 10–15 שניות, מנהלים מתלוננים, חלק מהמבקרים עוזבים. אתם מריצים htop: ה-CPU תקוע על 100%, אבל אי אפשר לדעת מה צורך אותו. שעה לאחר מכן, העומס יורד. למחרת זה חוזר. בלי נתונים היסטוריים, אי אפשר למצוא את הגורם; צריך לתפוס את זה בזמן השיא. ראינו את זה עשרות פעמים. הגדרת ניטור נכונה לוכדת חריגות ומקשרת אותן לאירועים — סוכנים, משימות cron, פריסות. זה מאפשר לתקן את הבעיה לצמיתות, לא רק לכבות שריפות. שעת השבתה אחת לחנות מקוונת יכולה לעלות בין $300–1k, ולמסחר אלקטרוני גדול עד $1.8k–2.6k, כך שהגדרת ניטור מחזירה את עצמה במהירות. בנוסף, הלקוחות שלנו חוסכים בממוצע $450–650 בחודש בעלויות שרת.
בפרויקטים של 1C-Bitrix, צרכני ה-CPU העיקריים הם php-fpm, mysqld וסוכנים (b_agent). PHP-FPM מריץ קוד שמציג עמודים ומטפל בפעולות משתמש. MySQL מטפל בשאילתות מסד נתונים — שאילתות לא אופטימליות יכולות לתפוס ליבה למשך זמן רב, מה שמוביל ל-I/O wait גבוה. סוכנים מריצים משימות רקע: עדכון אינדקס החיפוש, ייצוא קטלוג, עיבוד הזמנות. כל סוכן מוסיף מיקרו-שניות, אבל עם הרבה סוכנים או מרווחים גרועים הם יוצרים עומס קבוע. לא מספיק להסתכל על השימוש הנוכחי; צריך לנתח מגמות. לשם כך אנחנו משתמשים ב-Prometheus + Grafana, ולבדיקות מהירות — htop ו-mpstat. עם Prometheus, אתם מזהים קפיצות CPU פי 10 מהר יותר מאשר להסתמך על htop בלבד. הגדירו התראות CPU ב-Prometheus כדי ליידע את הצוות שלכם מיד כשהעומס חוצה ספים.
למה ניטור CPU הוא קריטי לשרת Bitrix
שימוש גבוה ב-CPU הוא סימפטום, לא הגורם. בלי ניטור, אתם רואים רק את הסימפטום אבל לא יודעים איזה תהליך גרם לו. לדוגמה, אם MySQL צורך CPU, הבעיה היא במסד הנתונים: שאילתות איטיות, אינדקסים חסרים, מבנים לא אופטימליים. אם php-fpm, בדקו את הקוד והגדרות האפליקציה. סוכני Bitrix יכולים להקפיץ את ה-CPU בכל ריצה. לפי התיעוד הרשמי של Bitrix, סוכנים לא מוגדרים כהלכה גורמים לעד 30% מעומס שרת נוסף. ניטור עם התראות מאפשר לדעת על אירועים כאלה בזמן אמת. Load average הוא מדד מערכת שמראה את המספר הממוצע של תהליכים שממתינים לריצה. ב-70% מהמקרים, לשרת בעייתי יש load average גבוה ממספר הליבות. אנחנו גם מנטרים את זמן ה-CPU steal בסביבות וירטואליות ובודקים קפיצות ב-context switching עם htop. שיקולים טכניים נוספים כוללים בעיות NUMA locality (ניטור עם mpstat), שימוש ב-inode באתרים עם תעבורה גבוהה, ו-cgroups להגבלת CPU לכל שירות.
איך להבחין בין בעיות PHP לבעיות MySQL
לאבחון מהיר, אנחנו משתמשים בפקודות הבאות:
htop -d 20 mpstat -P ALL 5 pidstat -p <PID> 5 אם htop -d 20 mpstat -P ALL 5 pidstat -p <PID> 5 צורך >50% CPU, בדקו שאילתות איטיות:
SHOW FULL PROCESSLIST; SELECT * FROM information_schema.PROCESSLIST WHERE TIME > 5; בעיות PHP מוסתרות לעתים קרובות בקוד: mysqld מראה את מספר התהליכים הפעילים. אם הם כל הזמן במקסימום, אתם צריכים יותר עובדים. ב-40% מהמקרים, הפתרון הוא הגדלת SHOW FULL PROCESSLIST; SELECT * FROM information_schema.PROCESSLIST WHERE TIME > 5; . context switching גבוה מצביע על תחלופת תהליכים מוגזמת; השתמשו ב-php-fpm status כדי לאשר. בנוסף, כוונו את oom_score של תהליכי PHP כדי למנוע הרגי OOM.
אילו כלי ניטור CPU הם היעילים ביותר עבור Bitrix?
לאבחון מיידי, htop הוא הטוב ביותר — הוא מראה תהליכים ותצוגת עץ. mpstat נותן פירוט לפי ליבה ושימושי לזיהוי בעיות I/O wait. לניתוח ארוך טווח וגרפים, אנחנו משתמשים ב-Prometheus + Grafana: הם אוגרים חודשים של מדדים וחושפים מגמות. atop שומר היסטוריה לכמה ימים אחרונים ודורש אין הגדרה — מצוין לרטרוספקציה. ניסינו עשרות כלים והתמקמנו על השילוב הזה; הוא מכסה 95% מהמקרים. עבור Prometheus, הגדירו את קולקטור ה-CPU של node_exporter עם הפרמטר pm.max_children כדי לאסוף מדדים לפי ליבה.
מדריך שלב-אחר-שלב להגדרת ניטור CPU
התקנת Prometheus + Grafana אורכת 2 עד 4 שעות, כולל הגדרת התראות. הנה תוכנית אופיינית:
-
ביקורת מצב נוכחי: בדקו
htop,mpstat, מצאו תהליכים מובילים עםuptime. - התקינו node_exporter על השרת: הורידו והריצו אותו עם הרשאות לקריאת מדדי CPU, זיכרון ודיסק.
-
הגדירו את Prometheus: ב-
cat /proc/loadavg, הוסיפו יעד עבור node_exporter (לדוגמה,ps aux --sort=-%cpu | head -10). - ייבאו דשבורד ב-Grafana: השתמשו בתבנית Node Exporter Full (מזהה 1860) או צרו משלכם עם ניצול CPU, load average, I/O wait.
-
הגדירו את Alertmanager: הוסיפו כלל לעומס CPU גבוה, לדוגמה,
prometheus.ymlלמשך 10 דקות. -
בדקו התראות: צרו עומס עם
localhost:9100וודאו שההתראה מופעלת.
ספים אופייניים
| מדד | רמה קריטית | פעולה |
|---|---|---|
| Load average / ליבות | > 2.0 | בדקו תהליכים, שלחו התראה |
| I/O wait | > 10% | בדקו שימוש בדיסק, שאילתות איטיות |
| ניצול CPU של mysqld | > 80% | בצעו אופטימיזציה לשאילתות |
| ניצול CPU של php-fpm | > 70% | הגדילו max_children או בצעו אופטימיזציה לקוד |
דוגמה לאבחון מהיר
בפרויקט אחד, load average נשאר על 3.5 עם 2 ליבות. הניתוח הראה שסוכן עדכון אינדקס החיפוש רץ כל 5 דקות. העברתו ל-cron עם nice הפחיתה את העומס ל-1.2. במקרים אחרים, load average ירד מ-3.5 ל-0.8, וזמן טעינת העמוד השתפר מ-15 ל-2 שניות.רשימת בדיקה לאבחון מהיר של CPU גבוה
- בדקו load average דרך
(node_load1 / count(count(node_cpu_seconds_total) by (cpu))) > 2אוstress --cpu 4. - לאבחון מהיר של האטה, מצאו תהליכי CPU מובילים:
uptime. - אם mysqld מוביל, הפעילו יומן שאילתות איטיות ונתחו את השאילתות.
- אם php-fpm, בדקו
cat /proc/loadavgלתור. - בחנו סוכנים:
ps aux --sort=-%cpu | head -10 - העבירו סוכנים כבדים ל-cron עם
pm.status_pathוקבצו אותם. - נטרו זמן CPU steal, שיעורי context switching והשפעות NUMA.
- השתמשו ב-cgroups כדי להגביל תהליכים עם CPU גבוה.
חיסכון ממוצע במשאבי שרת לאחר יישום ניטור הוא 20–40% — על ידי זיהוי שאילתות וסוכנים לא יעילים. לדוגמה, העברת סוכן כבד אחד ל-cron נכון יכולה לחצות את עומס השיא. שעת השבתה אחת של חנות מקוונת יכולה לעלות עשרות, כ-$9–13 בחיסכון, כך שהגדרת ניטור מחזירה את עצמה במהירות. בממוצע, ניטור חוסך $180–260 בחודש במשאבי שרת.
מה כלול בשירות הגדרת הניטור שלנו
אנחנו מציעים שירות מפתח ביד: מביקורת ועד מסירת תיעוד. האחריות שלנו: שיפור מדיד בביצועי השרת תוך שבוע. פרויקט אופייני כולל:
- ביקורת ביצועי שרת (CPU, זיכרון, דיסק, הגדרות PHP ו-MySQL).
- התקנה והגדרה של Prometheus + node_exporter + Grafana.
- דשבורד עם מדדים מרכזיים (CPU, load average, I/O wait, תהליכים מובילים).
- הגדרת התראות ל-Telegram/Slack.
- אופטימיזציה של php-fpm (max_children, pm.max_requests) וסוכנים (העברה ל-cron, מרווחים).
- מסירת תיעוד עם הוראות וגישה.
- חודש תמיכה לאחר הפריסה.
לוח זמנים: 2 עד 5 ימים תלוי במורכבות. התמחור מותאם אישית — נעריך את הפרויקט שלכם תוך יום עסקים אחד. צרו קשר כדי לדון בפרטים.
איך אנחנו עושים את זה: דוגמה אמיתית
לאחרונה, חנות מקוונת עם קטלוג של 50,000 מוצרים פנתה אלינו. כל לילה, סוכן עדכן את אינדקס החיפוש, והעמיס את ה-CPU ל-100% למשך שעה. זה גרם לכשלים במשימות רקע. העברנו את הסוכן ל-cron עם nice 19 וקבצנו עדכונים לפי 1,000 מוצרים. עומס השיא ירד מ-100% ל-30%, וזמן הביצוע ירד מ-60 ל-12 דקות. הגדרנו גם התראה ל-load average > 1.5 — עכשיו הצוות יודע על בעיות לפני שהן משפיעות על המשתמשים.
שלבי העבודה
| שלב | משך | תוצאה |
|---|---|---|
| ביקורת אקספרס | יום אחד | דוח על מדדי CPU נוכחיים, צווארי בקבוק |
| תכנון | יום אחד | תוכנית אופטימיזציה, בחירת כלים |
| הגדרת ניטור | 1-2 ימים | Prometheus + Grafana, התראות |
| אופטימיזציה | 1-2 ימים | php-fpm, סוכנים, MySQL (במידת הצורך) |
| מסירה והדרכה | יום אחד | תיעוד, דשבורדים, גישה |
חיסכון ממוצע בהשכרת שרת לאחר יישום ניטור הוא 20–40%, שלפרויקט ממוצע משמעותו עשרות, כ-$9–13 בחיסכון חודשי. קבלו ייעוץ על הגדרת ניטור לשרת שלכם — נציע את הפתרון האופטימלי לתשתית שלכם. הזמינו ביקורת, ונזהה את צווארי הבקבוק בשרת ה-Bitrix שלכם. הניסיון שלנו: למעלה מ-10 שנים ו-500+ פרויקטים באופטימיזציה ותמיכה ב-Bitrix.

