בעיות DNS תחת APACHE CENTOS 7

לאחרונה נתקלתי בבעיות DNS באחד השרתים כאשר ביצוע פקודת dig מ-terminal עבד באופן מעולה אך כאשר בוצעה קריאה לאתר ב-curl או PHP gethostbyname הורגשה איטיות משמעותית.

 

לאחר בדיקה מעמיקה של השרת נמצא כי ביטול אפשרות ה-IPV6 פתרה את הבעיה. מסתבר שהבעיה נעוצה בחיפוש כתובת IPV6 משרת ה-DNS מה שכמובן לא נמצא וממתין עד ל-timeout.

הוספת האפשרויות:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

ל-sysctl.conf פתרה את הבעיה.

או בצורה ידנית:

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6

 

מה הוא daemon?

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

לא מעת יישומים תחת לינוקס יכולים לרוץ גם כיישום וגם כ-daemon, היתרון הבולט של ה-daemon הוא האפשרות לפעול ללא פיקוד אינטראקטיבי מן המשתמש וללא צורך בקלט , פלט או כל דבר אחר מן המשתמש, יישום הפועל במצב daemon הוא בעצם יישום הפועל ללא תלות המשתמש, ישנם לא מעט תהליכי מערכת הפועלים כ-daemon למשל בסיס הנתונים Mysql או שרת ה-apache המספק שירות WEB. ישנם מקרים בהם האות האחרונה של היישום תצביע על כך שהיישום נועד לפעול כ- daemon, למשל במקרה של apache ה-damon נקרא – httpd או HTTP daemon .

ישנם עוד יתרונות רבים ואפשרויות פעולה של daemon ומתכנתים מנצלים בצורה מעולה את אותן אפשרויות בהתאם לצרכים של אותו היישום.

בדיקת יציבות הקו

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

הטיפ שלנו, הפקודה:

ping -s 1024 <hostname>

כלומר ביצוע ping בפרוטוקול ICMP לשרת מרוחק (כלומר למחשב אחר) באורך מטען (packet payload) של 1024 בייט.

פקודת ping רגילה שולחת בדרך כלל 64 בייט של מידע (ישנן מערכות שפחות אפילו 32 בייט ) אולם לא די בכך כדי לבדוק יציבות קו, יתכנו נפילות מהירות בקו או ריטוטים בהם 64 בייט יעברו באופן נקי ואילו מטעני נתונים גדולים יותר יתקלו בקשיים, לכן אנו שולחים מטען נתונים של 1024 בייט (כמעט כל חלון ה-TCP בברירת המחדל) על מנת לבדוק את הקו באופן מוחלט.

לאחר 10 או 15 (או תלוי כמה חמורה התקלה שלכם) של הרצת הפקודה, לחצו Ctrl+c ואז נקבל את נתוני הבדיקה:

— www.linuxexpert.co.il ping statistics —
29 packets transmitted, 29 received, 0% packet loss, time 28017ms
rtt min/avg/max/mdev = 0.294/0.538/2.281/0.424 ms

הנתונים מראים כי 29 packets נשלחו (29 מטעני נתונים נשלחו) ו-29 packets התקבלו בחזרה.

0% איבוד נתונים (packet loss) והזמן שלקח לבדיקה הוא 28017 מילישניות (28 שניות בערך).

rtt הן ראשי התיבות של round trip time כלומר כמה זמן לקח למטעני הנתונים להגיע לשרת המרוחק ובחזרה,ישנן ארבעה ערכים:

min – הזמן המהיר ביותר שמטען הנתונים עשה את הדרך לשרת המרוחק ובחזרה – 0.294

avg – הזמן הממוצע ביותר שמטען הנתונים עשה את הדרך לשרת המרוחק ובחזרה – 0.538

max – הזמן האיטי ביותר שמטען הנתונים עשה את הדרך לשרת המרוחק ובחזרה – 2.281

mdev – סטיית התקן של המדידות, ככל שערך זה גבוה יותר משמע מטעני הנתונים מגיעים בזמנים משתנים מאוד (כלומר יכול להיות שמטען אחד הגיע לאחר 1 מילישניה ומטען אחר הגיע אחרי 900 מילישניות ולאחריו המטען הבא הגיע לאחר 20 מילישניות וכן הלאה – כלומר חוסר יציבות בקו.

 

 

free הצגת נתוני זיכרון המערכת

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

free

ניתן לצפות  באופן מתמשך בנתוני הזיכרון של המערכת על ידי הוספת המתג s והזמן בשניותבין בדיקה לבדיקה, לדוגמה:

free-s2מציג את מצב זיכרון המערכת בכל 2 שניות.

  • total – סה"כ זיכרון פיזי \סה"כ זיכרון במחיצת ההחלפה.
  • used – סה"כ זיכרון בשימוש\סה"כ מחיצת ההחלפה בשימוש.
  • free – סה"כ זיכרון פיזי פנוי\סה"כ קובץ ההחלפה פנוי.
  • shared – יש להתעלם מנתון זה – נתון ארכאי ואינו בשימוש.
  • buffered  – סה"כ זיכרון פיזי בחוצצי זיכרון לשליפה מהירה.
  • cached – סה"כ זיכרון פיזי במטמון.

 

uname הצגת מידע על מערכת ההפעלה

הפקודה uname מציגה למשתמש מידע לגבי מערת ההפעלה והמחשב עליו היא רצה.

ישנם מתגים רבים לשליפת פיסות מידע כאלה ואחרות לגבי המערכת אך ברב המקרים נשתמש במתג a  שמאפשר הצגת כל המידע שפקודת uname יכולה להציג:

# uname -a
Linux www.linuxexpert.co.il 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux

המידע המוצג על פי סדר:

  • Linux – סוג הקרנל (kernel) של מערכת ההפעלה (על מחשבי Mac נקבל במקום Darwin).
  • www.linuxexpert.co.il – שם המכונה (hostname).
  • 2.6.18-164.el5 – גרסת הקרנל.
  • #1 SMP Thu Sep 3 03:33:56 EDT 2009 – תאריך הבנייה (קומפילציה) של הקרנל.
  • i686 i686 – סוג המעבד וחומרת המחשב.
  • i386 – ארכיטקטורת המעבד.
  • GNU/Linux – סוג מערכת ההפעלה.

rmdir מחיקת ספריה

למרות שישנה הפקודה rm המאפשרת לנו מחיקה של קבצים ו\או ספריות, הפקודה rmdir שימושית במיוחד כאשר מעוניינים למחוק רק ספריות ריקות.

הפקודה rmdir תמחק אך ורק ספריות ריקות לדוגמה נרצה למחוק את הספריה guides:

rmdir guides

הרצת הפקודה תמחק את הספריה במידה והספריה ריקה.

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

rmdir guides
rmdir: guides: Directory not empty

date הצגת או שינוי התאריך והשעה של המערכת

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

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

להצגת התאריך והשעה העדכניים במערכת לינוקס פשוט נריץ את הפקודה date:

# date
Wed May 21 14:09:57 IDT 2014

ומיד נקבל את התאריך והשעה הנוכחים של המערכת בשורה מתחת.

על מנת לעדכן את התאריך והשעה של מערכת ההפעלה נוכל להריץ אץ הפקודה:

date -s "6 Jun 2014 14:00:00"

ישנה כמות גדולה מאוד של מתגים המאפשרים קריאה וכתיבה של זמנים ותאריכים בפורמטים שונים, את כל אפשרויות הפקודה ניתן למצוא בתיעוד המערכת על ידי הרצת הפקודה: man date

cat הדפסת קובץ לפלט המסך

הפקודה cat  מבצעת פעולה חשובה מאוד בייחוד לתסריטים (scripts) אך גם לפעולה שוטפת בניהול מערכות לינוקס.

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

לדוגמה, אם נרצה להציג את תוכנו של הקובץ: etc/hosts/ נריץ את הפקודה:

cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 vpsweb.rct.co.il vpsweb localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

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

הערה חשובה: הרצת הפקודה cat  על קבצים גדולים מדי עלולה להאט את פעילות המערכת.

 

mkdir יצירת ספרייה חדשה

יצירת ספריה חדשה היא פעולה פשוטה וקלה בלינוקס, הפקודה mkdir שפירושה make directory מאפשרת יצירת ספריה מיד לאחר הרצת הפקודה.

דוגמה:

נניח שנרצה ליצור ספריה בשם guides כל שנצטרך הוא להריץ את הפקודה הבאה:

mkdir guides

והספרייה החדשה – guides כבר קיימת.

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

mkdir guides
mkdir: cannot create directory `guides': File exists

mv העברת קבצים וספריות

הפקודה mv משמשת להעברת קבצים ו\או ספריות לספריה אחרת.

נניח שברצוננו להעביר את הקובץ guide.txt  לתוך הספריה  guides, נריץ את הפקודה:

 mv guide.txt guides

להעברת ספריה לספריה אחרת נריץ בדיוק את אותה הפקודה, רק שבמקום שם הקובץ guide.txt  נרשום את שם הספריה, למשל, אם נרצה להעביר את הספריה guides  לספריה tmp נריץ את הפקודה:

mv guides /tmp