כשאתר Bitrix מתחיל להאט — לקוחות מתלוננים, מנהלים מתעצבנים, וכל לחיצה בלוח הניהול אורכת 10 שניות?
הכלי הראשון שכל מפתח חייב לשלוט בו הוא פאנל הביצועים המובנה. לאורך 8 שנים בשוק ויותר מ-50 פרויקטי Bitrix, אישרנו שוב ושוב שהנתונים שלו מספיקים ל-80% ממשימות האבחון ללא פרופיילרים חיצוניים. לאחרונה הגיע אלינו חנות מקוונת עם קטלוג של 50,000 פריטים — עמוד הקטלוג נטען ב-12 שניות.
לאחר כוונון הפאנל ואופטימיזציית SQL, הזמן ירד ל-1.2 שניות — שיפור פי 10, . תוצאות כאלה אופייניות כאשר יודעים למה להסתכל. להלן נפרט כיצד להגדיר את הפאנל, לפרש את המדדים שלו, ולבצע אופטימיזציה בפועל.
הפעלת פאנל הביצועים
הפעל דרך ממשק הניהול: Settings → Performance → Performance Panel. לניפוי באגים מהיר, ניתן להפעיל אותו באופן פרוגרמטי:
// Show panel for the current user
$USER->SetShowStatPanel(true);
// Or in dbconn.php for debugging on dev environment
define('BX_STATPANEL', true);
הפאנל גלוי רק למשתמשים מורשים בקבוצת "Administrators". בסביבת ייצור, השאר אותו מופעל רק במהלך ניפוי באגים פעיל — הוא מוסיף תקורה קטנה לאיסוף נתונים. לפי תיעוד Bitrix הרשמי, הפאנל אינו משפיע על מהירות העמוד עבור מבקרים רגילים.
מדדי פאנל ביצועים
- זמן ביצוע — זמן PHP + SQL כולל במילישניות, מחולק לזמן PHP ולזמן המתנה ל-MySQL.
- שאילתות DB — מספר שאילתות SQL והזמן הכולל שלהן. יש ללחוץ על הבלוק כדי לפתוח את רשימת כל השאילתות עם זמני הביצוע האישיים.
- מטמון — מספר גישות למטמון: פגיעות והחמצות. שיעור פגיעות נמוך (<80%) מאותת על תצורת מטמון לא יעילה או ביטול תוקף תכוף מדי.
- קבצים — מספר קבצי PHP שנכללו. 500+ קבצים ללא OPcache פירושם אתחול איטי.
- זיכרון — צריכת זיכרון שיא של סקריפט PHP. 64 MB+ מצביע על צורך לבדוק דליפות או טעינת נתונים מוגזמת.
לנוחות, הנה ערכים תקינים בטבלה:
| פרמטר | טוב | דורש תשומת לב | בעיה |
|---|---|---|---|
| זמן יצירה | עד 500 ms | 500-1500 ms | >1500 ms |
| שאילתות SQL | עד 50 | 50-100 | >100 |
| שיעור פגיעות מטמון | >90% | 80-90% | <80% |
| זיכרון | עד 32 MB | 32-64 MB | >64 MB |
| קבצי PHP | עד 300 | 300-500 | >500 |
בעיות אופייניות והפתרונות שלהן מרוכזים להלן.
| בעיה | סימפטום | פתרון |
|---|---|---|
| שאילתות N+1 | שאילתות דומות רבות | יש להשתמש ב-GetList עם בחירות, אגרגציית ORM |
| אינדקסים חסרים | שאילתות איטיות >50 ms | יש להוסיף אינדקס על שדות WHERE/ORDER |
| שיעור פגיעות מטמון נמוך | <80% | יש להגדיר מטמון מתויג, להפחית ביטול תוקף |
פרופיילינג SQL מפורט
לחץ על בלוק ה-SQL בפאנל כדי לפתוח את רשימת כל השאילתות. מיין לפי זמן. שאילתות מעל 50 מ"ש הן מועמדות לאופטימיזציה באמצעות EXPLAIN. שאילתות שחוזרות 10+ פעמים עם אותו דפוס מעידות על בעיית N+1. בדרך כלל אלו מאפייני אלמנטים של אינפובלוק שנשלפים אחד אחד. השוואה: שאילתה בנויה נכון עם JOIN יחיד רצה פי 10-20 מהר יותר מ-N שאילתות בודדות.
הגדרת מוניטור הביצועים
בתפריט הגדרות → ביצועים → מוניטור ביצועים, יש להגדיר:
- סף תיעוד — 1000 ms לסביבת ייצור, 500 ms לסביבת בדיקה
- רשומות לשמירה — 1000–5000 רשומות בטבלת
b_perf_hit - תיעוד SQL — יש להפעיל כדי לראות את רשימת השאילתות עבור דפים איטיים
צפייה ביומן: הגדרות → ביצועים → הצג יומן. יש למיין לפי זמן SQL כולל — שם מופיעים הדפים הבעייתיים ביותר.
אלגוריתם אבחון לבעיה ספציפית
- פתח את העמוד האיטי כשהפאנל מופעל.
- בדוק את היחס בין זמן PHP לזמן SQL. אם SQL >70%, בצע אופטימיזציה של השאילתות. אם זמן PHP גדול עם SQL קטן — הבעיה נמצאת בקוד הרכיב.
- פתח את רשימת שאילתות SQL, מיין לפי זמן.
- העתק שאילתה איטית, הרץ
EXPLAINב-MySQL Workbench או ב-phpMyAdmin. לעתים קרובות הוספת אינדקס מפחיתה את זמן השאילתה פי 5-10. - הוסף את האינדקס החסר, רענן את העמוד, ואשר את השיפור.
מקרה טיפוסי: בפרויקט אחד, עמוד הקטלוג נטען ב-8 שניות. הפאנל הציג 250 שאילתות SQL. EXPLAIN חשף אינדקסים חסרים בשדה IBLOCK_SECTION_ID. לאחר הוספת האינדקס, העמוד נטען ב-0.8 שניות — שיפור פי 10.
מדוע לוח הביצועים לא תמיד מספיק?
הלוח מצטיין בזיהוי שאילתות SQL איטיות ובעיות מטמון, אך הוא אינו מציג צווארי בקבוק בקוד אסינכרוני או בקריאות ל-API חיצוני. לאבחון מעמיק, אנו משתמשים בנוסף ב-Xdebug profiling ובניטור שירותי REST (למשל 1C או שערי תשלום). הלוח הוא קו האבחון הראשון, לא האחרון.
באיזו תדירות יש לבצע ביקורות ביצועים?
אנו ממליצים להשאיר את ניטור הביצועים פועל באופן רציף, ולבצע ביקורת מלאה אחת לרבעון או לאחר עדכונים משמעותיים. כך ניתן לזהות ירידות ביצועים בשלב מוקדם. לדוגמה, לאחר הוספת קטלוג חדש או אינטגרציה של API חדש, יש לבדוק האם מספר שאילתות ה-SQL גדל.
מה כולל ביקורת ביצועים מלאה
אם תפקידו בידינו את האבחון, תקבלו:
- ביקורת מלאה של הביצועים הנוכחיים באמצעות הפאנל וכלים נוספים.
- אופטימיזציה של שאילתות SQL: ניתוח EXPLAIN, הוספת אינדקסים, ריפקטורינג של שאילתות ORM.
- כוונון מטמון: מטמון מתויג, מטמון HTML, מצב משולב.
- הגדרת Performance monitor לאיסוף מדדים מתמשך.
- דוח מסכם עם המלצות ותוכנית פעולה.
- אחריות על התוצאות — נגדיר יעדי זמן טעינה.
. הזמינו אבחון מקדים באמצעות פאנל הביצועים. צרו קשר לייעוץ בנושא אופטימיזציה.
דוגמה לפקודה לבדיקת אינדקסים מהירה
SELECT TABLE_NAME, COLUMN_NAME, INDEX_NAME, NON_UNIQUE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_database';
שאילתה זו מציגה את כל האינדקסים במסד הנתונים, ועוזרת לזהות כפילויות וחסרים.

