פקודת htop בשרת לינוקס היא אחת מהכלים היעילים ביותר לניהול ולמעקב אחר סקריפטים הצורכים בצורה מוגזמת את המשאבים של המעבד וה-RAM בזמן אמת. בעזרת מסך htop תוכלו לבדוק את עמודות CPU%, MEM%, PID, USER, TIME+ ו-COMMAND כדי להבין אילו תהליכים כמו PHP, Python, Node.js, cron, מסדי נתונים או תהליכים מערכתיים מעמיסים על השרת שלכם. לאחר מכן, ניתן לבדוק את בעל התהליך, את נתיב הקובץ ואת מטרת העבודה כדי להתערב באופן בטוח.
בין אם מדובר בהוסטינג משותף, VPS, VDS או שרת ייעודי, חלק גדול מהאטות המיידיות נובעות מסקריפטים הפועלים ללא שליטה. לדוגמה, תוסף לא תקין של WordPress, קובץ PHP שנכנס ללולאה אינסופית, משימת cron פועלת באופן אינטנסיבי, שאילתא לא אופטימלית במסד נתונים או קובץ אינטרנט שנפרץ יכולים להעלות את השימוש ב-CPU ל-100% בתוך דקות. כאשר השימוש ב-RAM עולה, שירותים יכולים להיתקע, חיבורי MySQL עשויים להתנתק, אתרים עלולים להציג שגיאות 503 או ליבת הלינוקס עשויה לסיים כמה תהליכים באמצעות OOM Killer.
במדריך זה, נתחיל בהתקנת htop, נלמד איך לקרוא את המסך, נבחן איך לאתר סקריפטים צורכי CPU ו-RAM, נבין איך למצוא את נתיב הקובץ דרך PID וכיצד להתערב בתהליך בצורה בטוחה. בנוסף, נעסוק בבדיקת אבטחה, ביקורת cron, ניתוח יומנים והמלצות אופטימיזציה כדי למנוע חזרה על הבעיות. אם אתם חווים בעיות תדירות במגבלת משאבים בשרת שלכם, תוכלו לבדוק את דפי חבילות שרת VPS ו-אירוח אינטרנט בעל ביצועים גבוהים על מנת לשקול את הבחירה של התשתית שלכם.
מה זה htop ולמה זה שימושי יותר מפקודת top?
htop הוא כלי טרמינל המאפשר מעקב אינטראקטיבי על התהליכים הפועלים במערכות לינוקס. הוא דומה לפקודת top הקלאסית, אך מציע ממשק קריא יותר, אינדיקטורים צבעוניים של משאבים, אפשרויות מיון, חיפוש, סינון וניהול תהליכים בקלות רבה יותר. לכן, כאשר יש לבצע אבחון מהיר על שרת חי, htop הוא אחד הכלים הראשונים שהמנהלי מערכת פונים אליהם.
באמצעות htop תוכלו לראות באופן מיידי את המידע הבא:
- אחוז ה-CPU שכל תהליך משתמש בו
- אחוז ה-RAM שכל תהליך משתמש בו וכמות הזיכרון
- מספר PID של התהליך
- המשתמש שהריץ את התהליך
- שורת הפקודה או שם הסקריפט
- משך הפעולה וערך העדיפות
- עומס ממוצע, סך ה-RAM, swap ושימוש בליבות ה-CPU
בעיקר כאשר מספר אתרים, משתמשים או שירותים פועלים על אותו השרת, פשוט לראות את השימוש הכולל במשאבים אינו מספיק. יש צורך לזהות לאיזה משתמש, אתר, משימת cron או קובץ סקריפט הבעיה שייכת. פקודת htop בשרת לינוקס מספקת אבחנה ראשונית מהירה בנקודה זו.
התקנת htop: פקודות בהתאם להפצת הלינוקס
בהרבה הפצות לינוקס מודרניות, htop עשוי לא להיות מותקן מראש. אם יש לכם הרשאות root או sudo, תוכלו להתקין אותו תוך מספר שניות. עדכון רשימת החבילות לפני ההתקנה, במיוחד בשרתים חדשים, מפחית את הסיכון לטעויות.
התקנת htop ב-Ubuntu ודביאן
בהגדרות שרת מבוסס Ubuntu או Debian ניתן להשתמש בפקודות הבאות:
sudo apt update
sudo apt install htop -y
לאחר ההתקנה, תוכלו להתחיל את הכלי על ידי כתיבת פקודת htop. אם אין לכם הרשאות sudo, ייתכן שתצטרכו לבקש תמיכה מספק ההוסטינג שלכם. אם אתם משתמשים ב-VPS מנוהל, לרוב גישת ה-root שייכת לכם.
התקנה ב-AlmaLinux, Rocky Linux, CentOS ו-RHEL
במערכות מבוססות RHEL, מנהל החבילות יכול להיות dnf או yum, בהתאם לגרסה:
sudo dnf install htop -y
בגרסאות ישנות של CentOS עשוי להיות צורך במאגר EPEL:
sudo yum install epel-release -y
sudo yum install htop -y
אם ההתקנה הצליחה, כתיבת htop בטרמינל תפתח את מסך המעקב הצבעוני. אם אתם חדשים בניהול שרתים, תוכן מדריך פקודות לינוקס יכול לשמש כהתחלה מעשית.
קריאת מסך htop: מה כל עמודה משמעותה?
ברגע שhtop נפתח, בחלק העליון של המסך מופיעים ליבות ה-CPU, ה-RAM, ה-swap, מספר המשימות, מספר התהליכים, העומס הממוצע ומידע על הזמן שעבר מאז ההפעלה. בחלק התחתון מופיעה רשימת התהליכים הפועלים. התחומים הנפוצים ביותר לאבחון בעיות הם כדלקמן:
| עמודה | משמעותה | מתי צריך לחשוד? |
|---|---|---|
| PID | מספר הזיהוי הייחודי של התהליך. | נדרש כדי לבדוק את נתיב הקובץ והחיבורים. |
| USER | המשתמש המפעיל את התהליך בלינוקס. | צריך לבדוק אם יש תהליך המופעל על ידי משתמש לא צפוי. |
| CPU% | אחוז השימוש הנוכחי של המעבד על ידי התהליך. | תהליכים הנמצאים במרווח של 80-100% במשך זמן ממושך צריכים להיבדק. |
| MEM% | החלק של התהליך בסך ה-RAM. | אם סקריפט בודד משתמש ביותר מ-20% מה-RAM, זה מסוכן. |
| TIME+ | הזמן הכולל שבו השתמש התהליך ב-CPU. | מראה תהליכים שתופסים משאבים במשך זמן ממושך ולא רק לזמן קצר. |
| COMMAND | מידע על הפקודה, השירות או הסקריפט המופעל. | יש לחפש נתיבי קובץ בתהליכים כמו php, python, node, perl, bash, java. |
נקודה חשובה שיש לשים לב אליה היא שזינוק פתאומי ב-CPU אינו תמיד מעיד על בעיה. לדוגמה, במהלך גיבוי, אופטימיזציה של תמונות, ניקוי קאש או בזמן תנועה גבוהה, ה-CPU עשוי לעלות זמנית. הבעיה מתרחשת כאשר אותו תהליך צורף לצריכת CPU או RAM גבוהה במשך דקות ארוכות, כאשר ערך העומס הממוצע חורג בהרבה ממספר הליבות, והשרותים לא מצליחים להגיב.
איתור סקריפטים צורכי CPU בעזרת htop
כדי למצוא סקריפטים צורכי CPU, בזמן שhtop פתוח, תוכלו לבחור את תחום המיון על ידי הקשה על מקש F6 או למיין לפי עמודת CPU%. בחלק מהטרמינלים, אם יש תמיכה בעכבר, לחיצה על כותרת CPU% עשויה להספיק. התהליכים המופיעים בראש הרשימה הם אלו הצורכים את מירב ה-CPU באותו רגע.
שלב 1: מיין לפי עמודת CPU%
בזמן שhtop פועל, מיין את התהליכים לפי שימוש ב-CPU. לדוגמה, אם אחת מהתהליכים כמו php-fpm, php, python3, node, java, mysqld או bash מופיעה בעקביות בראש הרשימה, רשמו את התהליך הזה. בשימוש בליבה בודדת, 100% עשוי להיראות נורמלי, אך במערכות מרובות ליבות, תהליך עשוי להראות ערכים של 200% או 400%. זה מעיד שהתהליך משתמש בכמה ליבות בו זמנית.
שלב 2: רשמו את מס' ה-PID ופרטי ה-USER
רשמו את מספר ה-PID ואת פרטי ה-USER של התהליך החשוד. לדוגמה, אם PID הוא 24819, USER הוא siteuser והפקודה היא php /home/siteuser/public_html/wp-cron.php, יש סיכוי גבוה שהבעיה קשורה למשימת cron או למנגנון WordPress באותו אתר. אם שורת הפקודה קצרה מדי, תוכלו להפעיל את ההגדרה בhtop שתציג את שורת הפקודה המלאה או להשתמש בפקודת ps כדי לקבל פרטים נוספים.
שלב 3: ראו את הפקודה האמיתית של התהליך
כדי לראות את שורת הפקודה המפורטת לפי PID, ניתן להשתמש בפקודה:
ps -fp PID
דוגמת שימוש:
ps -fp 24819
פלט זה בדרך כלל מציג מאיפה הסקריפט פועל. אם הפקודה היא php /home/kullanici/public_html/index.php, זה עשוי להיות בקשה מהאתר שנגרמה על ידי תנועה. אם הפקודה היא php /home/kullanici/public_html/wp-content/plugins/bilinmeyen-eklenti/task.php, זה עשוי להעיד על בעיה הקשורה לתוסף.
שלב 4: בדקו את נתיב הקובץ ואת הקבצים הפתוחים
כדי לראות אילו קבצים תהליך משתמש, הכלי lsof הוא מאוד שימושי:
lsof -p PID
פקודה זו תראה אילו קבצים, ספריות, יומנים וחיבורים רשתיים התהליך מחזיק פתוחים. בסביבות הוסטינג, פלט זה מאפשר להבין איזה תיק אתר פעיל. לדוגמה, אם תראו קובץ PHP עם שם מוזר הפועל בתיקיה /home/example/public_html/wp-content/uploads, זה עשוי להיות סימן להפרת אבטחה. במקרה כזה, יש לנקוט בפעולה מעבר לסגירת התהליך; יש לבצע ניקוי קבצים, שינוי סיסמאות, עדכון תוספים וסריקות אבטחה. ניתן גם לבדוק את דף פתרונות לתעודת SSL עבור תצורות חיבור מאובטחות.
איתור סקריפטים צורכי RAM בעזרת htop
בעיות ב-RAM עשויות להתפתח בצורה יותר חמקמקה מאשר בעיות ב-CPU. כאשר ה-CPU עולה, בדרך כלל ניתן לחוש בהאטה מיידית; אך כאשר ה-RAM נגמר, שירותים עשויים להיסגר באופן בלתי צפוי, swap עשוי להיות בשימוש כבד והשהיות בשרת עשויות לעלות. תוכלו לרשום את התהליכים הצורכים את הזיכרון הרב ביותר על ידי מיון לפי עמודת MEM% במסך htop.
הבנת הקשרים בין MEM%, RES ו-Swap
htop מציג את אחוז ה-MEM% במבט ברירת המחדל. בכמה הגדרות, גם עמודות VIRT, RES ו-SHR עשויות להופיע. כאשר מבצעים ניתוח RAM, ערך ה-RES הוא בעל חשיבות רבה; הוא מצביע על השטח שהסקריפט משתמש בו בפועל בזיכרון הפיזי. ערך ה-VIRT לא תמיד משקף את צריכת ה-RAM האמיתית, ולכן עשוי להיות מטעה אם נבחן אותו לבד.
לדוגמה, על VPS עם 4 GB RAM, אם תהליך PHP משתמש ב-900 MB RES, זה לא נורמלי. באופן דומה, אם אפליקציית Node.js עולה מ-200 MB ל-1.5 GB עם הזמן, זה עשוי להעיד על דליפת זיכרון. שימוש גבוה ב-RAM מצד MySQL או MariaDB יכול לעיתים להיות התנהגות רגילה של קאש; כאן יש לבחון את ביצועי השאילתות, הגדרות ה-buffer ואת סך ה-RAM במערכת.
סיבות טיפוסיות לסקריפטים צורכי RAM
- קוד PHP, Python או Node.js שנכנס ללולאה אינסופית
- טעינת קבצי CSV, XML או JSON גדולים בזיכרון בפעם אחת
- תוספים או פונקציות של נושא ב-WordPress שאינם אופטימליים
- תהליכים של עיבוד תמונות, יצירת PDF או המרת וידאו
- שאילתות כבדות שחוזרות על עצמן עקב שימוש לא מספיק בקאש
- תנועה של בוטים או התקפות הגורמות לאותו סקריפט לרוץ פעמים רבות
- שירותים ארוכי טווח עם דליפת זיכרון
במקרים כאלה, סגירת התהליך רק בעזרת פקודת kill תספק הקלה זמנית בלבד. פתרון קבוע מחייב לנתח מה עושה הסקריפט, אילו קלטים מפעילים אותו ולמה הוא לא מנקה את הזיכרון.
חיפוש, סינון ומצב עץ ב-htop
כאשר פועלים מאות תהליכים על השרת, חיפוש ידני ברשימות עשוי להיות קשה. htop מציע קיצורי דרך שימושיים בנושא זה. ניתן לחפש בעזרת F3, להחיל סינון בעזרת F4, ולעבור למצב עץ בעזרת F5. מצב העץ חשוב במיוחד כדי לראות את הקשרים בין הורה לילד. לדוגמה, תוכלו לראות בצורה ברורה את תהליכי php-fpm שפועלים תחת nginx או Apache, את הסקריפטים שמופעלים תחת cron או את השירותים של Node.js שמנוהלים על ידי supervisor.
דוגמאות סינון פרקטיות
- על ידי כתיבת php, הצג רק תהליכים של PHP.
- על ידי כתיבת python, סנן את הסקריפטים של Python.
- על ידי כתיבת wp-cron, בדוק את ההתנהגות של cron ב-WordPress.
- על ידי כתיבת node, בדוק את אפליקציות Node.js.
- על ידי סינון לפי שם משתמש, הצג את התהליכים של חשבון הוובhosting הספציפי.
סינונים אלו חוסכים זמן, במיוחד בשרתים עם משתמשים רבים. לדוגמה, אם יש 30 אתרים שונים על אותו השרת, ניתן להבין במהירות מאיזה חשבון נובעת הבעיה על ידי בדיקת עמודות הUSER ונתיב הפקודה יחד. אם אתם מעוניינים לפשט את ניהול הפרויקטים שלכם מבוססי דומיין, כדאי לבדוק את בדיקת דומיין ורישום.
תוכנית התערבות בטוחה עבור PID חשוד
כאשר אתם מזהים תהליך צורכי משאבים, ייתכן שתרצו מיד להשתמש ב-kill -9. עם זאת, גישה זו עלולה להוביל לאובדן נתונים, פעולות כתיבה לא שלמות או חוסר עקביות בשירותים. יש לנקוט בתוכנית בטוחה יותר.
1. תעדו את התהליך
ראשית, רשמו את PID, USER, COMMAND, CPU%, MEM% ואת הזמן. אם אפשר, צלמו את המסך של htop. הרשומות הללו יקלות על השוואה במקרים של בעיות חוזרות. במיוחד בפרויקטים של סוכנויות, מסחר אלקטרוני או פרויקטים ארגוניים, נתונים אלו עשויים להיות שימושיים בעת הצגת הסברים טכניים ללקוחות.
2. אמתו את נתיב הקובץ של התהליך
אמתו את נתיב הקובץ בעזרת הפלט של ps -fp PID ו-lsof -p PID. אם הקובץ נמצא בתיקיית השורש של האתר, בדקו את יומני היישום המתאימים. עבור WordPress, הקובץ wp-content/debug.log, עבור שרת האינטרנט, יומני access ו-error, עבור PHP-FPM, יומן slow log מספקים רמזים חשובים.
3. נסו לסיים את התהליך בעדינות
אם התהליך באמת לא נשלט, שלחו קודם כל את אות הסיום הסטנדרטי:
kill PID
חכו כמה שניות ובדקו אם התהליך נסגר ב-htop. אם הוא לא נסגר, ואם זה פוגע בצורה חמורה בבריאות המערכת, תוכלו להשתמש בפקודה הבאה כאמצעי אחרון:
kill -9 PID
אות kill -9 מסיים את התהליך מבלי לתת לו הזדמנות לבצע ניקוי. לכן יש להשתמש בזה בזהירות עבור פעולות של מסדי נתונים, תהליכי כתיבה או משימות גיבוי.
4. אם הוא מתחיל מחדש, מצאו את הגורם
אם תהליך סוגרים אותו, אך הוא מתחיל מחדש תוך שניות, ייתכן שהגורם הוא cron, שירות systemd, supervisor, בקשה מהאינטרנט או תנועה של בוטים. יש לבדוק יומני cron בעזרת crontab -l, סטטוס שירותים בעזרת systemctl status service-name, ולבדוק את יומן הגישה עבור תנועת רשת. אם הבעיה נובעת מ-wp-cron של WordPress, יש לעבור על הגדרות cron האמיתיות ועל מדיניות הקאש.
שילוב ממצאי htop עם יומנים

htop מראה לכם מה צורך משאבים; יומנים מסייעים להבין למה זה קורה. כאשר שני הנתונים הללו לא משולבים, האבחון עשוי להיות חסר. לדוגמה, אם תהליך php-fpm צורך 180% CPU ב-htop, אך לא ניתן לדעת איזו URL או בוט מפעיל את התהליך הזה ללא יומן הגישה.
דוגמאות ליומנים שניתן לבדוק כוללות:
- יומן גישה של שרת האינטרנט: מראה את ה-URLs שמקבלים תנועה גבוהה.
- יומן שגיאות של שרת האינטרנט: מראה שגיאות PHP, הרשאות קבצים ושגיאות 500.
- יומן slow log של PHP-FPM: מראה קבצים ופונקציות PHP שעובדות לאט.
- יומן השאילתות האיטיות של MySQL: מזהה שאילתות SQL כבדות.
- יומן auth או secure: מציג ניסיונות כניסה חשודים.
- יומן cron: מראה מתי המשימות המתוזמנות פועלות.
אם תראו ב-htop PID צורך CPU גבוה שמקבל אלפי בקשות ל/wp-admin/admin-ajax.php באותו זמן, הבעיה עשויה להיות תוסף, תנועת בוטים או פעולה של AJAX שנעשתה בצורה לא טובה. במקרה זה יש לחשוב על WAF, הגבלת תנועה, קאש ואופטימיזציה של תוספים. כדי לטפל בביצועי האתר בצורה רחבה יותר, תוכן אופטימיזציה למהירות אתרים עשוי להיות מועיל.
איך להבחין בין עומס נורמלי לעומס בעייתי?
כל שימוש גבוה במשאבים לא מעיד על משבר. יש לקחת בחשבון את החומרה של השרת, רמת התנועה, סוג האפליקציה ותהליכי התחזוקה. אם יש לכם VPS עם 2 ליבות, ערך העומס הממוצע שיישאר גבוה על 6-8 במשך זמן רב עשוי להעיד על צוואר בקבוק חמור. לעומת זאת, באותו ערך בשרת ייעודי עם 16 ליבות, זה עשוי להיות נורמלי. לכן, כאשר מפרשים את העומס הממוצע, יש לדעת כמה ליבות יש.
| תצפית | מצב אפשרי | המלצת פעולה |
|---|---|---|
| CPU קצרה ב-100%, ואז חוזרת לנורמלי | עיבוד זמני כבד | אמתו עם יומן, אל תתערבו מיד. |
| אותו PID משתמש ב-CPU גבוה במשך דקות רבות | לולאה אינסופית או תהליך כבד | מצאו את נתיב ה-PID, בדקו את הסקריפט. |
| RAM ממשיכה לעלות ולא יורדת | דליפת זיכרון | בדקו את קוד השירות ואת הגדרות ה-worker. |
| שימוש ב-swap עולה במהירות | חוסר ב-RAM פיזי | תכננו אופטימיזציה של RAM או שדרוג חבילות. |
| יש הרבה תהליכים של PHP באותו זמן | תנועת בוטים או בקשות גבוהות | בצעו בדיקות יומן, חומת אש ובדיקת קאש. |
השוואה זו מסייעת להפריד בין פאניקה מיותרת לבין משבר ביצועים אמיתי. במיוחד באתרים מסחריים, תקופות קמפיינים, אינטגרציות תשלום ועדכוני מלאי עשויים לגרום לעלייה זמנית במשאבים. אך אם עלייה זו מפריעה לחוויית המשתמש, יש לערוך אופטימיזציה לאפליקציה ולהעריך את קיבולת השרת.
חשש אבטחה: האם סקריפטים צורכי משאבים עשויים להיות מזיקים?
סקריפטים הצורכים CPU או RAM לא תמיד הם טעות תמימה. באתרים שנפרצו, תוקפים עשויים להריץ סקריפטים לשליחת ספאם, כריית מטבעות, תנועת proxy, בוטים DDoS או סקריפטים של דלת אחורית. בhtop, פקודות מוזרות שמופעלות על ידי משתמשים לא צפויים, קבצים עם שמות אקראיים, קבצים הפועלים בתיקיית /tmp או קובצי PHP הפועלים בתיקייה public_html/uploads צריכים להיבדק ברצינות מבחינת אבטחה.
סימנים חשודים
- שמות קבצים חסרי משמעות או עם תווים אקראיים בעמודת COMMAND
- קבצים הפועלים מתוך תיקיות /tmp, /dev/shm או uploads
- תהליכים של perl, python או bash שלא אמורים להיות שם
- תהליכים המייצרים חיבורים גבוהים לרשת החיצונית
- אותו משתמש שמפעיל מספר תהליכים בזמן קצר
- שינויים לא מורשים לאחרונה בקבצי אינטרנט
במקרה כזה, לפני סגירת התהליך, כדאי לנסות לתעד פלט של פקודות כהוכחה. לאחר מכן, יש לבדוק את הרשאות הקבצים, להסיר קבצים מזיקים, לשנות את כל הסיסמאות של הפאנל ו-CMS, לעדכן קבצים קריטיים של תוספים-נושאים ולבצע סריקות אבטחה. בנוסף, שימוש באימות דו-שלבי בפאנלים המנהליים והסרת הרשאות כתיבה מיותרות עשויים להפחית את הסיכון בטווח הארוך.
שיטות עבודה מומלצות למניעת חזרת בעיות ביצועים
איתור הבעיה עם htop הוא חשוב; אך הערך האמיתי הוא במניעת חזרת אותה בעיה. הצעדים הבאים יכולים להפחית משמעותית את ההפסקות הנגרמות על ידי CPU ו-RAM בשרתים לינוקס.
- כוונו את הערכים של PHP memory_limit, max_execution_time ו-pm.max_children על פי קיבולת השרת.
- השתמשו במנגנון קאש ב-WordPress, Joomla או תוכנות מותאמות אישית.
- הסירו תוספים, נושאים ומודולים לא נחוצים.
- אופטימיזו שאילתות כבדות בעזרת יומן השאילתות האיטיות של MySQL.
- אל תרכזו משימות cron באותה דקה; הפעלו אותן באופן מפוזר.
- החילו הגבלות תנועה, robots.txt וחוקי חומת אש עבור תנועת בוטים.
- סננו יומני יישומים באופן קבוע; עקבו אחרי ההשפעות של קבצים גדולים על הדיסק וה-RAM.
- עקבו אחרי מדדי השרת לא רק ברגעי משבר, אלא באופן קבוע.
אם לאחר האופטימיזציות עדיין יש שימוש גבוה במשאבים, הבעיה לא בהכרח טמונה רק בצד התוכנה. ייתכן שהתנועה עלתה, האפליקציה התפתחה או שהחבילה הנוכחית לא מספיקה. במקרה כזה, VPS בר המדרגה, יותר RAM, דיסק NVMe מהיר יותר או שרת עם משאבים מבודדים עשויים להיות הגיוניים. לצורך ניתוח הצרכים, ניתן להשוות אפשרויות באתרי חבילות הוסטינג ו-פתרונות שרתים עסקיים ללא לחצים מכירתיים.
תסריט לדוגמה: התפרצות CPU באתר WordPress
בואו נתקדם לפי תסריט מציאותי. על VPS עם 4 ליבות ו-8 GB RAM פועלים מספר אתרי WordPress. המשתמשים מדווחים שהאתר מאט לעיתים קרובות ומקבלים שגיאות 502 מדי פעם. כאשר פותחים את htop בטרמינל, העומס הממוצע עומד על 12, כל ליבות ה-CPU מלאות ויש הרבה תהליכי php-fpm של אותו משתמש בראש הרשימה.
על ידי לחיצה על F4 ניתן להחיל סינון לפי שם המשתמש. נרשמת PID של אחד מהתהליכים צורכי ה-CPU. בפלט של ps -fp PID מופיע php-fpm worker; בעזרת lsof -p PID מתגלה שיש גישה לקובץ /home/site/public_html/wp-content/plugins/example-importer/import.php. כאשר בודקים את יומן הגישה, רואים בקשות מנהל לאותו קובץ באותם רגעים ומיד לאחר מכן קריאות AJAX חוזרות.
כפתרון, מפסיקים את תהליך הייבוא, סוגרים את המשימה המתוזמנת של התוסף, מחלקים את תהליך הייבוא הכבד לחלקים ומבצעים עדכון לערך max_execution_time של PHP. בנוסף, במקום wp-cron, משתמשים ב-cron של המערכת. כתוצאה מכך, העומס הממוצע יורד מ-12 ל-1.8, השימוש ב-CPU חוזר לנורמלי וזמן התגובה של האתר משתפר באופן משמעותי. דוגמה זו מדגימה עד כמה htop הוא כלי עוצמתי כאשר הוא משולב עם ps, lsof וניתוח יומנים.
שגיאות נפוצות בשימוש ב-htop
- לסגור רק את התהליך בראש הרשימה ולא לחקור את הסיבה העמוקה.
- לחשוב ש-VIRT הוא צריכת RAM אמיתית.
- להתייחס לשימוש ב-RAM של MySQL לצורך קאש כבעיה ישירה.
- להשתמש ב-kill -9 כאופציה הראשונה.
- להאשים את היישום או המשתמש מבלי לבדוק יומנים.
- לפרש את ערך העומס הממוצע מבלי לקחת בחשבון את מספר הליבות.
- לא לבדוק את שלמות הקבצים במקרה של חשש לאבטחה.
הימנעות מטעויות אלו לא רק מפחיתה את זמן ההפסקה אלא גם מקטינה את הסיכון לאובדן נתונים עקב התערבות שגויה. אבחון נכון בניהול מערכת, פעמים רבות, חשוב יותר מהתערבות מהירה.
שאלות נפוצות
מה עושה פקודת htop בשרת לינוקס?
פקודת htop בשרת לינוקס מציגה בזמן אמת את פרטי התהליכים הפועלים, כולל CPU, RAM, משתמש, PID ומידע על הפקודה. כך תוכלו לאתר במהירות סקריפטים הצורכים בצורה מוגזמת את המעבד או את הזיכרון.
איך אני מוצא סקריפט צורכי CPU עם htop?
מסך htop מראה את התהליכים ממוינים לפי עמודת CPU%, רשמו את PID ופרטי ה-USER של התהליך שנשאר למעלה זמן רב. לאחר מכן, השתמשו בps -fp PID וב-lsof -p PID כדי לאמת את נתיב הקובץ של הסקריפט ומה הוא מריץ.
מה עדיף לנתח בצריכת RAM MEM% או VIRT?
בניתוח RAM, MEM% ובעיקר ערך RES הם יותר משמעותיים. ערך VIRT מצביע על כמות הזיכרון הווירטואלי המוקצה ולא תמיד משקף את צריכת ה-RAM הפיזית.
האם נכון לסגור תהליך צורכי משאבים מיד עם kill -9?
באופן כללי, לא. קודם יש לתעד את התהליך, לבדוק את נתיב הקובץ ולנסות את פקודת kill PID. kill -9 צריך לשמש כאמצעי אחרון רק כאשר התהליך לא נסגר ופוגע בבריאות המערכת.
האם שימוש גבוה ב-CPU ב-htop תמיד מעיד על התקפה?
לא. גיבויים, ייבוא, יצירת קאש או תנועה גבוהה יכולים גם להעלות את השימוש ב-CPU. אך שמות קבצים אקראיים, קבצים הפועלים מתוך /tmp או uploads ותהליכים של משתמשים לא צפויים יכולים להעיד על חשש אבטחה.
לסיכום, פקודת htop בשרת לינוקס היא נקודת התחלה מהירה, פרקטית ויעילה לאיתור סקריפטים צורכי CPU ו-RAM. כדי לקבל את התוצאות המדויקות ביותר, יש לשלב את נתוני htop עם ניתוח PID, פלט lsof, בדיקות cron וניטור יומנים. אם יש בעיות משאבים חוזרות בשרת שלכם, בדקו גם אופטימיזציה של התוכנה וגם את קיבולת התשתית; במקרה הצורך, השוו את פתרונות ההוסטינג, VPS ו-SSL של Hostragons כדי לבחור את המבנה המתאים ביותר לפרויקט שלכם ללא לחצים מכירתיים.