כל תוסף שתוסיף לאתר WordPress יוסיף זמן ריצה ושאילתות למסד הנתונים. במדריך זה נסביר כיצד לבדוק מהיכן מגיעים זמני הריצה. באמצעות מידע זה תוכל, יחד עם צוות התמיכה של WPML, למצוא צווארי בקבוק ולשפר את ביצועי האתר שלך.

התקן את התוסף Debug Objects והפעל אותו

אנו נשתמש בתוסף Debug Objects כדי לראות ולהבין את שאילתות מסד הנתונים הנחוצות להפקת האתר. Debug Objects יראה פירוט מדויק של השאילתות שרצות על כל דף באתר. פלט זה יהיה זמין רק לך כשתתחבר כמנהל. מבקרים לא יראו את פרטי איתור הבאגים.

כדי להתקין את התוסף, עבור אל 'לוח הבקרה' של WordPress ובחר 'תוספים' מהתפריט הימני, ולאחר מכן 'הוסף חדש'. בדדה החיפוש, הקלד debug objects ולחץ על המקש Enter.

במסך תוצאות החיפוש, לחץ על הלחצן 'התקן':

התקנת התוסף Debug Objects
התקנת התוסף Debug Objects

לאחר השלמת ההתקנה, הפעל את התוסף.

לחלופין, ניתן להוריד את Debug Objects ישירות מהמאגר של WordPress ולהעלות אותו לספרייה wp-content/plugins בשרת שלך. לאחר מכן הפעל אותו בדף 'תוספים' בניהול של WordPress.

השבתה של Xdebug

אם אינך יודע מה זה Xdebug, תוכל לדלג על חלק זה. אם אתה משתמש ב-Xdebug, הקפד להשבית אותו לפני בדיקות ביצועים. Xdebug יגרום לעומס משמעותי על השרת וכל התוצאות תהיינה מעוותות. למד כיצד להשבית את Xdebug.

הגדרת התצורה של Debug Objects כדי לנתח שאילתות SQL

ראשית, הוסף שורה זו לקובץ wp-config.php (קובץ זה נמצא בספרייה הראשית שבה מותקן WordPress):

define( 'SAVEQUERIES', TRUE );

עכשיו, עבור אל כלים -> Debug Objects והשבת את כל האפשרויות למעט 'שאילתות מסד נתונים':

הגדרת התצורה של Debug Objects
הגדרת התצורה של Debug Objects

גלול לתחתית המסך ולחץ על הלחצן 'שמור'.

בדיקת הפלט של איתור הבאגים

לאחר הפעלה של התוסף והגדרת התצורה שלו, ניתן להתחיל באיתור באגים. כשאתה מחובר ל-WordPress כמנהל, בקר בדף כלשהו שבו אתה סבור כי האתר פועל לאט מדי (אם זה מה שקורה בדפים רבים, בחר בזה שנראה איטי במיוחד), ולחץ על הקישור 'אובייקטים' שבראש סרגל הניהול:

 קישור של Debug Objects מוכן עבורך
קישור של Debug Objects מוכן עבורך

תראה שלוש כרטיסיות עם פרטי איתור הבאגים:

פלט של Debug Objects בשלוש כרטיסיות
פלט של Debug Objects בשלוש כרטיסיות

כיצד לקרוא את פלט איתור הבאגים ולהבינו

בשלוש טבלאות אלה תראה נתונים רבים אבל רק חלקם חשובים לנו ורלוונטיים לתוסף WPML. באופן כללי אנו מעוניינים בשני דברים:

  • שאילתות איטיות מאוד – לעיתים, חלק גדול מבעיית הביצועים הוא כתוצאה ממספר שאילתות שלוקחות זמן עיבוד רב
  • שאילתות החוזרות פעמים רבות – במקרים אחרים אין שאילתות איטיות, אלא שאילתות מהירות רבות שאורכות זמן רב

איתור שאילתות איטיות

עבור לכרטיסייה הראשונה בשם, שאילתות DB, וחפש את השאילתות האיטיות ביותר. התוסף Debug Objects עוזר לנו בכך על-ידי הדגשה במסגרת כתומה של שאילתות שאורכות יותר מ-0.5 מילי-שניות.

הצגת שאילתות
הצגת שאילתות

מתחת למחרוזת השאילתה ניתן לראות את שם הפונקציה שביצעה את השאילתה. אולם זה עשוי להיות מטעה מכיוון שכרטיסייה זו מראה רק את הפונקציה האחרונה מערימת הביצוע ואנו לא יודעים אם מקורה בליבה של WordPress או מאחד התוספים (או מאיזה תוסף).

בדיקה אם השאילתה הגיעה מהתוסף WPML

העתק את השאילתה האיטית (ctrl+C) ובחר את הכרטיסייה השנייה בשם שאילתות DB של התוסף. ניתן לראות מספר טבלאות עם שאילתות, המסודרות לפי שמות התוספים וקובצי התוספים שבהם עברו השאילתות. אם התוסף WPML השתתף בהרצת השאילתה, הוא יהיה רשום בטבלה הרלוונטית.

לחץ על ctrl+F במקלדת, ולאחר מכן לחץ על ctrl+V כדי להדביק את השאילתה שהועתקה.

פעולה זו תתחיל חיפוש בטבלה אחר כל מופע של השאילתה שנבחרה. ככל הנראה תראה יותר מתוצאה אחת. כדי לעבור ביניהן, לחץ על המקש F3.

עבור כל תוצאת חיפוש, בדוק אם היא בטבלה הנמצאת תחת אחד מהתוספים של WPML. אם זה נכון, רשום בפניך את:

  • שם התוסף
  • הקובץ שממנו הופעלה השאילתה
  • מספר השורה בקובץ זה (העמודה הראשונה בטבלה)

פרטי שאילתה
פרטי שאילתה

שאילתות נפוצות מ-WPML ומתוספים אחרים, ומערכות עיצוב

חלק מהשאילתות עוברות דרך תוספים אחרים ו/או ערכות עיצוב בנוסף לתוסף WPML. לדוגמה, 'תרגום המחרוזות' של WPML מספק שירותי תרגום עבור מחרוזות הנמצאות בליבה של WordPress, בערכת העיצוב ובכל התוספים. אם תראה את התוסף 'תרגום המחרוזות' מככב ברשימת שאילתות DB, המשמעות היא ש-WPML צריכה לתרגם מחרוזות רבות באתר.

במקרה כזה השאילתה האיטית שמצאת תופיע בכרטיסייה 'מסד הנתונים של התוספים' בטבלה שמתחת לשם התוסף שלנו, אבל גם בטבלאות הבאות הקשורות לתוספים אחרים, או בכרטיסייה השלישית: 'שאילתות מסד נתונים של תוכן WP'. בדוק זאת לפני שתדווח על שאילתה איטית בפורום שלנו. אם תמצא את אותה שאילתה גם בכרטיסייה השלישית, רשום את שם הקובץ מהכרטיסייה השלישית. אנו נדע אם ערכת עיצוב ספציפית מעורבת בהרצת שאילתה איטית זו ואת זהות ערכת העיצוב.

דיווח על התוצאות בפורום הטכני של WPML

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

  • השאילתה האיטית וזמן ההרצה שלה.
  • האם ניתן למצוא את השאילתה בכרטיסייה השנייה של יומן איתור הבאגים. האם היא נמצאת בתוסף WPML, ואם כן, את הקבצים המעורבים ומספרי השורות בהם.
  • האם ניתן למצוא את השאילתה גם בכרטיסייה השלישית ואת שם הקובץ ומספר השורה.

העתק את התוכן של כל כרטיסייה ושתף אותו איתנו באמצעות Pastebin.

כדי לעשות זאת:

  1. עבור אל פורום התמיכה של WPML והתחל שרשור חדש. תאר את בעיית הביצועים שאתה רואה והיכן נוכל גם אנחנו לראות אותה.
  2. פתח את הכרטיסייה הראשונה בתוצאות של Debug Objects
  3. בחר את התוכן של כרטיסייה זו. הקפד לכלול את הכל מ'שאילתות', כולל המקטע 'שגיאות' וכל רשימת השאילתות.

    בחירת כל השאילתות
    בחירת כל השאילתות

  4. העתק (ctrl+C) את בחירתך
  5. עבור אל pastebin.com והדבק (ctrl+V) את מה שבחרת לאזור הטקסט, ולאחר מכן לחץ על הלחצן 'שלח'.

    הדבקה ל-Pastebin
    הדבקה ל-Pastebin

  6. העתק את כתובת ה-URL משורת הכתובת של הדפדפן.

    העתקת כתובת URL של Pastebin
    העתקת כתובת URL של Pastebin

  7. הדבק את כתובת ה-URL מ-Pastebin לשרשור התמיכה.
  8. חזור על שלבים 2-6 עבור התוכן של שתי הכרטיסיות האחרות.

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


נספח: השבתה של Xdebug

Xdebug היא הרחבת PHP שמאפשרת איתור באגים בקוד. בשימוש נכון היא גם יכולה לעזור בניתוח המקור לבעיות ביצועים.

כאשר היא מופעלת, Xdebug מוסיפה עומס משמעותי לשרת מכיוון שהיא צריכה ללכוד את מה שמתרחש בזמן אמת. לכן לעולם אין להשאיר את Xdebug פועלת כשאתה מבצע בדיקות ביצועים. אם Xdebug פועלת בזמן בדיקות ביצועים, המספרים שתקבל יהיו שגויים לחלוטין. רוב העומס המדווח יהיה בגלל Xdebug ולא בגלל הקוד שאתה רוצה למדוד את הביצועים שלו.

הדרך הנכונה לאתר בעיות ביצועים באמצעות Xdebug היא למדוד ללא Xdebug, לקבל את התוצאות ואז למצוא את מקור בעיות הביצועים באמצעות Xdebug.

Xdebug עשויה לפעול על השרת גם אם אינך בודק את הפלט שלו. זה קורה לעיתים קרובות כשאנשים מפעילים את Xdebug לעבודת איתור באגים אמיתית ואז משאירים אותה טעונה, וחושבים שהיא לא פעילה.

הדרך לוודא שהיא כבויה היא להסתכל בפלט של phpinfo().

Xdebug מוצג בפלט phpinfo
Xdebug מוצגת בפלט phpinfo (רע לבדיקות ביצועים)

אם אתה רוצה לכבות את Xdebug, עשה זאת על-ידי הסרה או הכנסה להערה מקובץ php.ini או קובץ conf.d/xdebug.ini:

zend_extension=xdebug.so

הסר את השורה שלעיל, אל תוסיף אותה!

כך נראה phpinfo כאשר Xdebug לא פועלת:

phpinfo כאשר Xdebug לא רצה (טוב לבדיקות ביצועים)
phpinfo כאשר Xdebug לא רצה (טוב לבדיקות ביצועים)

ברגע שאין כאן הפנייה כלשהי ל-Xdebug היא בטוח כבויה.

זה לא משנה אם חלקים אחרים של הקובץ phpinfo כוללים הפניות ל-Xdebug או לא, כל עוד היא לא מופיעה כהרחבה טעונה בחלק העליון.