Posts tagged: לינוקס

רשת המחשוב במשרד באמצעות סביבות וירטואליות - חלק 4

על ידי , יום שישי 4 דצמבר 2009 11:59

הקדמה

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

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

הפעלת הקוד האחרונה

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

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

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

בסופו של דבר אנחנו יכולים בסופו של דבר עם סקריפט bash (המכונה ע"י cron כל 10 דקות) שנראה פשוט כמו זה:

  #! / Bin / sh
 אם ps ax | grep-v grep | grep php > / dev / null
 אז
     הד "עבודה בימים אלו עיבוד, יציאה"
 אחר
     הד "איוב אינו פועל, להתחיל עכשיו"
     cd / נתיב / ל / עבודה / העתקה
     עדכון svn
     PHP yourJobProcessingScript.php
 Fi 

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

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

באמצעות הנתונים האחרונים

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

החזיקו את הסוסים שם! מה אם מקורות הנתונים שלי הם ענקיים? טוב זה באמת מקרה של כמות הנתונים אנחנו מדברים? זה יכול להיות יותר חסכוני להתקין כונן קשיח גדול יותר נוספת לתוך כל מכונה מאשר לרכוש שרת עיבוד נוסף. זו שאלה של תקציב הוא עד העסק להחליט. זה אולי מקורות הנתונים שלך כל כך גדולה שלו אינו עומד על הפרק רק כדי לשמור על כמות הנתונים במכונות הפועלות שלך. אם כך מה היית עושה? גם אנחנו יכולים להסתכל קורא שרת הנתונים המקומי, אבל זה עלול לגרום לבעיות עם הרשת. במקרה זה מערכת רשת כגון זה עשוי להיות מציאותי כוללים בסביבת המשרד שלך. ייתכן גם כי אתה יכול לבדוק את אסטרטגיות חלופיות הפועלים, למשל רק קורא לעובדים 08:00-06:00 כל לילה ו / או נתונים ויסות בקשות המקור.

הלאה נניח כמות הנתונים שלנו מקורות 100GB של נתונים. ובכן כן, זה לא מעט נתונים כדי לנוע ברשת על העדכון. איך היינו להבטיח שיש לנו את העותק האחרון של הנתונים במקרה זה? Rsync היא אפשרות, אבל באופן אישי אני חושב על ידי הרצת קוד עדכנית הנתונים בשרת שלך עבודה עיבוד להגדיר זאת כמאסטר בשכפול (יומן עם סל יפה ארוכה) יכול להיות כל הכבוד:

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

כך אני מגדיר את שרת ההפגנה שלי. כדי להגדיר שכפול עקבתי אחרי המדריך באתר MySQL ( הגדרת שכפול ) ותוך 20 דקות היה לי עובד inital שלי שכפול השליטה העבודה במערך השרתים. עבור כל עובד נוסף את ההגדרות שכפול תהליך עבד בכל פעם כאשר VM הועתק.

תקציר

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

בפעם הבאה

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

רשת המחשוב במשרד באמצעות סביבות וירטואליות - חלק 3

על ידי , יום שישי 4 דצמבר 2009 23:37

הקדמה

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

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

הגדרת העובד שלך - או שרת ביזקיט

השלב הבא בתהליך הוא להגדיר עובדים הווירטואלי שלך. בשביל זה אני הולך להשתמש ההתקנה של CentOS באמצעות VirtualBox. אני הולך להתקין mySQL ו PHP על השרת, המכונה גם צליעה (Nux לי, מ 'ySQL, P-HP) Server (אולי עשו את זה שם למעלה).

  • התקנת VirtualBox על המחשב שלך Windows (בעקבות הקישור)
  • הורד והתקן את CentOS (הגרסה הנוכחית 5.3) בתוך מכונה וירטואלית שנוצרה

אין טעם לי ללכת זה יש ככל הנראה של "1000 של הדרכות גדולים בחוץ (אוקיי, הנה אחד: יצירה Managing מכונת CentOS וירטואלי תחת VirtualBox ). נקודה חשובה לציין אני מניח כי קראתי מכונה וירטואלית שלי GridMachine.

עד כמה הבחירות שלי של הלקוח וירטואליזציה ומערכת ההפעלה ללכת אין סיבה משכנעת גדול עבור כל בחירה. VirtualBox היא משהו אני משתמש במחשב ביתי והוא נתמך על ידי שלושת מערכות ההפעלה הגדולות. בחרתי כמו CentOS מערכת ההפעלה שלו יציבה טובה אני משתמש בו בשרת האינטרנט שלי. אני מאמין גדול את הכלים הנכונים עבור העבודה (אם כי אני החלת "להשתמש המהירה והקלה ביותר עבורך" המנטליות כאן), כך שאם X מערכת ההפעלה מפעילה את הקוד שלך מהר יותר וביעילות רבה יותר להשתמש במקום :)

חשוב לוודא כי VM שלך משתמש ב-DHCP, אחרת עבור כל מכונה וירטואלית חדשה היה צריך להיות מוגדר בנפרד וזה משהו שאנחנו לא want.By באמצעות DHCP לא צריך להגדיר את הגדרות הרשת באופן אישי למכונות העובד, DHCP ימסור את כתובות IP בשבילך. לכן אתה יכול להעתיק מכונה וירטואלית שלך אודות משרד בלי לדאוג הגדרת כל אחד למעלה (זה משפר את יכולת הרחבה ומפחית הממשל עובד).

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

כיצד להפעיל משרות על העובד

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

  • תמיד רץ תסריט: התסריט, בין אם הוא סקריפט מעטפת, או סקריפט PHP מבוצע פעם אחת על העובד והוא פועל במסגרת בלולאה אינסופית. אני מוזלים בשיטה זו כמו התרסקות אחת התסריט ואפשרות העובדים שלך יפסיק לפעול ללא התערבות כלשהי.
  • התסריט מבוסס cron ביצוע: מדי דקות צילומי cron daemon בעיטות מחוץ קריאה התסריט שלך להזיז דברים. בלי לבדוק כמה זה יכול להוביל עותקים רבים של הריצה עובד התסריט.

ההחלטה שלי היתה ללכת עם cron שמתחיל תסריט מעטפת כל minutes. 10 סקריפט מעטפת שלי מבצע את המשימות הבאות:

  1. קבל רשימה תהליך grep הזה "PHP". אם לא נמצא אז להמשיך.
  2. לקרוא קוד העבודה שלך, במקרה שלי זה יהיה משהו מבוסס PHP
  3. התסריט עובד משלים להפעיל שלה
  4. מוכן ללכת שוב על השיחה המתאים הבא

סקריפט bash שלי נראה משהו כזה:

  #! / Bin / sh
 אם ps ax | grep-v grep | grep php> / dev / null
 אז
     הד "עבודה בימים אלו עיבוד, יציאה"
 אחר
     הד "איוב אינו פועל, להתחיל עכשיו"
     PHP yourJobProcessingScript.php
 Fi 

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

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

התקנת Windows כדי לאתחל את העובדים

המשימה הראשונה היא להבין את הפקודה להפעלת מכונה וירטואלית משורת הפקודה של Windows. אם התקנת VirtualBox במיקום ברירת המחדל ואתה שם העובד GridMachine שלך אז הפקודה הנדרשת כדי לטעון את העובד שלך הוא:

  "C: \ Program Files \ יום ראשון \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

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

  "C: \ Program Files \ יום ראשון \ VirtualBox \ VBoxHeadless.exe", startvm GridMachine - vrdp = off 

פעולה זו תפעיל את המחשב הווירטואלי מבלי GUI ולאפשר לו להציל את המדינה בכבוד. הטיעון השני מכבה RDP ולכן אינו מתנגש עם Windows RDP, או לתת לך הודעה על מאזין ביציאה 3389. שם מחשב וירטואלי הוא תלוי רישיות!

בשלב הבא, אנחנו צריכים להגדיר את Windows לבעוט את VM עובד שלנו ברגע שהמכונה לא היה פעיל. כדי לעשות זאת (ב-Windows XP) תצטרך ללכת התחל -> כל התוכניות -> עזרים -> כלי מערכת -> משימות מתוזמנות להלן:

משימות מתוזמנות

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

עד סוף הטקסט להוסיף בטווח שלנו "startvm GridMachine" מחרוזת ולהבטיח כי בטווח רק כאשר מחובר נותר unticked. שלח את המשימה לוח הזמנים הבא ולשנות את לוח הזמנים הנפתחת אל האפשרות "כאשר פעיל ', לבחור את כמות הזמן שאתם רוצים כי המחשב יהיה פעיל לפני שעבר לכרטיסיה הבאה.

לבסוף untick אפשרות הקובע להפסיק את המשימה אם הוא כבר פועל כמות X של זמן, אבל אין סמן את האפשרות להפסיק את המשימה אם המכשיר כבר אינו פעיל.

לוח זמנים

זהו זה עבור ההתקנה של Windows המארח!

תקציר

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

בפעם הבאה

ב חלק 4 נהיה מסתכל שימוש בכלים על מנת להבטיח כי אתה מפעיל את הגירסה האחרונה של המקורות קוד ונתונים, כך התוצאות המתקבלות הן תמיד up-to-date עם המידע העסקי העדכני ביותר ואת ההיגיון.

רשת המחשוב במשרד באמצעות סביבות וירטואליות - חלק 1

על ידי , יום שישי 4 דצמבר 2009 11:23

הקדמה

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

כמו PHP Developer אני הולך להשתמש בכלים שאני משתמש בכל יום, כלומר לינוקס, mySQL , PHP, VirtualBox ו חתרנות (SVN). עם זאת אני מקווה במדריך זה יתאימו לשפות וטכנולוגיות אחרות באותה מידה.

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

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

למה לפרוס רשת מחשוב Office?

ראשית ייתכן שאתה חושב, למה לא פשוט להשתמש מחשוב ענן משאבים כגון פלטפורמת EC2 של אמזון ? ובכן הסיבות יכולה להיות מספר, למשל:

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

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

היתרונות של רשת מחשוב משרד

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

אז, 1 מכונת * כוח 10% * 2/3 זמן = 0.067 כלומר 1 עיבוד שולחן העבודה בזמן המתנה יכול לעבד 6 משרות מלאות ביום.

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

אז במשרד מדומה שלנו של 50 מכונות נוכל להגדיל את כוח העיבוד שלנו משרת 1 עד 4 שרתי עיבוד מלא, או שאנחנו יכולים לעבד 400 מקומות עבודה ליום במקום 100.

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

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

טכנולוגיות

מה אתה צריך? (או יותר נכון מה אני משתמש):

  • משרד מכונות סרק (במקרה שלי המחשב הנייד הישן חילוף Windows XP)
  • VirtualBox (או תוכנת לקוח וירטואליזציה)
  • מחשב וירטואלי עם PHP, MySQL running פועל לחתוך את מערכת ההפעלה, אני מתקשר שרתים אלה רפויות שלי :)
  • דרושים להפעלת
  • שרת העבודה (יכול להיות אחרת מכונה וירטואלית אי שם)

משרות אופייניות

סוגי עבודות כי המערכת נועדה לפעול הוא כדלקמן:

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

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

פתרונות הרשת אינם רק יתרון לעיבוד עבודות מסוג זה. ביסודו של דבר, כל תהליך אשר ניתן לפצל ליחידות עצמאיות ניתן להפעיל במקביל. לראות את ויקיפדיה לדוגמאות ומידע נוסף: מחשוב גריד , אבל כמה דוגמאות מפורסמות הם SETI @ Home ו BIONC . יש מסגרות להפעלת רשתות מחשוב, ואלה בהחלט שווה להסתכל לתוך.

מה נשיג?

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

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

אני אהיה בבניין (אישור בניתי, אז כתב את זה) יישום לדוגמה לבחון את המושגים במחשב המקומי באמצעות Windows XP ו 'GridMachine "שלי מכונה וירטואלית. השליטה התפקיד שלי שרת יהיה מכונת העיקרי שלי אשר פועל פדורה 11 .

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

בפעם הבאה

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

רשת המחשוב במשרד באמצעות סביבות וירטואליות - חלק 2

על ידי , יום שישי 4 דצמבר 2009 11:23

הקדמה

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

ב חלק 1 נתתי סקירה כללית של מערכת טכנולוגיות אני יהיה להשתמש גם כפי שנדון כמה סיבות אפשריות למה אתה רוצה ליצור רשת Office.

עבודה ובקרה

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

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

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

שרת העבודה

אנחנו הולכים צריך מקום לשלוט עבודות שלנו, זה אמור להיות במערכת רק ברשת שלך, כי יש מאתר משאבים קבוע, להיות כתובת IP, שם המחשב המארח, כתובת האתר (שימוש פנימי DNS), וכו 'זה בגלל העובדים צריכים לדעת איפה לחפש עבודה, עובדים צריכים למצוא עבודה מלאה במערכת (לא מערכת בקרת למצוא עבודה לעובדים).

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

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

הגדרה בסיסית

התקנה בסיסית של שרת העבודה שלנו תכלול את מה שאני קורא את אחד השרתים הרפוי שלי (כלומר Nux לי, מ 'ySql, P-HP). הקוד רץ על עובדים תיאה יהיה ממש להבין מה זה יכול לרוץ עבודות על ידי אינטראקציה עם מסדי נתונים עבודה עם שליטה במערכת. אחר כך נוכל ליצור שירות אינטרנט ולמעשה לחלק משרות ולא צורך העובדים לעשות את העבודה הקשה עצמם, אבל בינתיים נמשיך להשתמש בעיקרון KISS (שמור את זה פשוט, טיפש!).

אז, מאפשר ליצור שלושה של MySQL שולחנות להתמודד עם מקומות עבודה. אלה יהיו `עבודות`, `jobRecords`, ו `jobResults`.

עבודות השולחן כאן אני משתמש ב SQL החברים חלופה מעט גדולה phpMyAdmin רק כי קל יותר שלה להתקין על CentOS (לאחרים לראות: 10 חלופות הגדול ל phpMyAdmin )

טבלה זו מכילה 5 שדות פשוטים,

  • מק"ט: לזהות את העבודה
  • שם: יכול להיות הפניה ללקוח, או כל מספר מזהים אחרים
  • סטטוס: אתה צריך לדעת איפה העבודה נמצאת, למשל
    • 0: לא התחיל
    • 1: הרים
    • 2: הושלם
  • started_by: מי התחיל לעשות את העבודה? פעולה זו אינה הכרחית לחלוטין אבל הוא נחמד שיש. הייתי מציע מעקב עובדים לפי כתובת ה-IP שלהם ברשת
  • started_at: מתי העובד להתחיל את העבודה? על ידי מעקב אחר עבודות שלא הושלמו בתוך פרק X זמן אנחנו יודעים שאנחנו צריכים להרים את העבודה שוב ולהתחיל עיבוד על ידי עובד אחר. עובדים יכולתי להפסיק עיבוד / go offline עבור כל מספר סיבות, הפסקת חשמל, קריסה, אובדן ברשת, וכו '

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

מאפשר להוסיף כמה עבודות לדוגמה כמה:

לדוגמה מקומות עבודה

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

  • מק"ט: ID של הרשומה
  • השם: שמו של אדם
  • כתובת: כתובת של איש
  • jobs_id: מזהה את העבודה כי זה שיא קשור

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

  • job_record_id: קישור תוצאה לשולחן העבודה
  • התוצאה: הנתונים התוצאה

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

בחירת עבודה

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

  1. קח לאף משרה שאינם מסומנים מלאה אלא עובד שלנו לאפס אותם (תחליף ME__ __ עם מזהה, הקלה ביותר תהיה כתובת ה-IP):
     עדכון ג `עבודות` סט `מצב` = 0 WHERE `מצב` ו `= 1 started_by '= __ ME__; 
  2. באמצעות הבחירה שלנו עבודה קריטריונים, בחר את העבודה ולספר מערכת בקרת שהעובד הזה היא להתמודד עם זה:
      עדכון ג `עבודות` סט `מצב` = 1 `,` started_by = __ ME__, `started_at` = NOW () WHERE `מצב` = 0 או
     (`מצב` ו `= 1 started_at`> DATE_SUB (NOW (), שעה מרווח X)) ORDER BY `id` ASC; 

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

  3. לאחר מכן לתפוס את משרות פרטים ואחריו את הרשומות עצמם:
      SELECT * FROM `עבודות` WHERE `started_by '= __ ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __ JOBID__; 

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

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

תצורת העבודה

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

  1. משרות לקחת 1 כל יום לרוץ: משמעות הדבר היא כי העובדים שלך צריך 15 ימים כדי לעבד את כל העבודה (זוכרים 10% מכוח עבור 2/3rds של זמן). זה בבירור לא תצורה חכם, גודל התפקיד שלך הוא גדול מדי! זה היה לוקח לפחות כפול זמן כדי לקבל את העבודה מעובד לעובד הראשוני צריך ללכת נפקד (זמן להרים את זה כי לא חזר התוצאה בתוספת הזמן עיבוד מחדש). באידיאל שיהיה לך לפחות 1 משרה מלאה פינה בקלות עד סוף כל תקופה המתנה ארוכה, כך אתה שומר את העבודות מתקתקות על ובמקרה הרע במקרה העבודה היה לוקח יומיים לתהליך 1 צריך ללכת חסר.
  2. משרות לקחת 1 דקה לרוץ: משמעות הדבר היא כי העובדים שלך לוקח בערך 15 דקות כדי להפעיל את כל העבודה. בעוד בתחילה זה עשוי להיראות אידיאלי, אתה מקבל עיבוד עבודה נוספת במהלך זמן ארוחת הצהריים, הפסקות קפה, פגישות, וכו 'בתרחיש זה מכניס למתח על תחומים אחרים של המערכת ומציג בעיות משלה. לדוגמה, ראשית יחס התקנה / עיבוד שלך הזמן הוא הולך ישר, ולכן מאבד את יעילות המערכת. הרשת יהיה מידע כל הזמן זרימת עבודה לצוות עובדים שונים מתסכל שהם דונג יום שלהם לעבודת יום. אתה גם הולך לשים את הלחץ יותר על השרת שלך עבודה עיבוד כפי שהוא צריך לחלק אוכל המון המון חתיכות קטנות של עבודה על בסיס קבוע. Lastly, in this situation if your job server goes down you're going to create a huge back log of uncompleted work whereas bigger jobs could of continued processing blissfully unaware that the job server was experiencing difficulties.

In reality there will be no one ideal configuration for your grid setup, much depends on the available resources, types of job, job turnaround time requirements, network capability, and so on. However some guidelines would be:

  • Size jobs so that each worker can get through at least 3-4 jobs in a period of 15 hours (the longest likely idle time period)
  • Play with the job size so that setup time becomes fairly insignificant compared to the processing time (bearing in mind the above point).
  • If a job doesn't complete in double the amount of time (maybe less) you expect it to complete it assume that its gone AWOL and start processing it with another worker. This means you may have to wait up to three times the normal length of a job for it to complete (possibly longer if the subsequent job fails). You may want to reduce this time, but be careful not to reduce it too much as you may start duplicating processing tasks on a regular basis.
  • Jobs should be independent of outside requirements as much as possible. The job server, for example, should only be contacted at the start and end of every job.
  • Don't saturate your network, this will have two negative effects, your daytime staff will find using the network frustrating and problems may be experienced with connections timing out a problem that will only get worse as you scale your grid.
  • Ensure jobs can run on your workers. If jobs become too memory intensive or disk space intensive jobs will start aborting and the only thing you'll notice is a drop in number of jobs processed with no real reason why.

Submitting Results of a Job

When submitting the results of a job it is important to check that results have not been submitted by another worker, especially if the current worker has been dormant for some time.

When results are submitted ensure that the number of results matches the number of records within the job.

As stated previously, and can not be over emphasised, build fault tolerance into job retrieval and results submission. The workers can (and most likely will) go into suspend mode at the most inconvenient of times and this needs to be catered for. Also once again abstracting away your results submission will help cater for future changes to your job control system much easier to deal with.

תקציר

In this section we have looked at what a job control server needs to do and how to get a very basic system set up. We discussed how to retrieve a job from the control system and how best to configure jobs to get the most our of your office grid system. To finish, a paragraph or two on submitting results back to the job control server was presented.

  • A job control server manages jobs and ensures that all work units are completed
  • By abstracting your job select/results submission we can change the technology of the control server without much problems
  • Configure your jobs to ensure that they are run quickly and efficiently without putting too much pressure on your network infrastructure, and without duplicating processing tasks on a regular basis.
  • Ensure that you build fault tolerance and error checking into your routines, workers can suspend and resume and the most inconvenient of times. Remember to check if results have already been submitted by another worker.

Next time

In part 3 we'll create our virtual processing machine and set up our windows machines to become idle-time workers.

Office Grid Computing using Virtual environments – Part 5

By , Friday 4th December 2009 11:03 pm

הקדמה

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

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. So,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

פריסה

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

עצור!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.

Zend Framework: Fundamentals – Review

By , Saturday 28th November 2009 10:42 pm

My employer recently paid for a group of us developers to take the Zend Framework: Fundamentals course, here I'll summarise my thoughts and opinions on the course for others. For those looking to save time, here's my summary:

For developers who haven't had time to look at the Zend Framework this course (Zend Framework: Fundamentals) offers a good overall picture of the framework introducing you to the key areas and giving enough information in order to continue. For those who have spent time looking at the framework and have followed one or two tutorials this course does not offer much beyond.

רקע

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. I've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

About the Course

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). The time is spent going through a set of slides provided by Zend with discussion at any time. You can use a microphone to talk to the instructor, but to be honest I didn't see anyone use anything more than the chat window. In addition a VMWare Ubuntu machine is provided that has example code and projects set up an a trial version of Zend Studio. The course leader talks to attendees either over an integrated VoIP solution, or you can dial in using one of the many worldwide dial in numbers.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. Personally I felt that providing the code or each app and then asking us to develop what was essentially a copy alongside didn't really provide a good learning experience. I would have preferred to develop an application similar, but not identical. to the example application with the benefit of having a guide to refer to. Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. After the course feedback was taken, it was emphasised several times through the course that Zend takes feedback very seriously, in fact apparently our version of the course was quite new. Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

The course style was informal, allowed for feedback and collaboration between attendees and the instructor. The course leader was friendly, approachable (email addresses were shared for questions), and whilst his presentation from the slides was a bit shaky seemed fully competent in the framework. He was clearly someone who used the framework on a regular basis rather than someone who is taught to teach the course, I liked the 'real world' experience in that respect.

Overall Feeling

In some ways I found the course a waste of time, in others it was very handy. Hopefully I'll get my reasons across clearly, and maybe provide some food for thought or useful feedback (knowing me this is unlikely!).

For myself this course was aimed at too low a level. Having gone through the quickstart guide, read Rob Allen's Zend Framework in Action, and worked with the framework a little I didn't really get anything too much. I would of liked the course to pick up from the end of the quickstart and develop additional skills.

That said, the course title does clearly state “Zend Framework: Fundamentals ” and in that aspect the course achieves what it sets out to do. Other members of the development team that haven't spent the time looking into the framework finished each session with enthusiasm and asked questions which was really nice to see.

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 100%. It was also time that I got to sit down each day and think about coding using the framework and future projects, something I wouldn't of been able to do otherwise (can you imagine your company agreeing to that? :) ). Last but not least you also get a nice certificate from Zend to say that you attended the course (albeit by email).

Zend Framework Certification

This was one question that kept coming to mind during the course, would it prepare me for the certification? The quick, easy is a resounding No . The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

תקציר

Given everything I've written above, I'll summarise everything in two easy bullet points:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. The course seems to generate interest and enthusiasm for the framework amongst developers.
  • Used the Zend Framework: While it was nice to shore up some of the very basics I felt the time, effort, and funds to take the course could of been better spent elsewhere. It will be nice to see Zend create a new higher level course to take developers to the next level – at least to the standard of certification and beyond. For that I would sign up immediately.

[notice] child pid XXXX exit signal Segmentation fault (11)

By , Sunday 11th October 2009 6:09 pm

If you've recently upgraded PHP or Apache you maybe coming up against the issue of your webserver returning blank pages, and throwing error messages into your logs with no idea why, here's one possible way to fix it…

I've had this problem a couple of times recently after upgrading Apache or PHP on a virtual machine. The first time I noticed the error I simply reverted to a backup of my VM but the second time I realised I'd have to look into the issue.

The first time I noticed the issue some of my web pages were being served as blank files while the others worked absolutely fine. After some investigation I noted that apache was writing out to /var/log/http/error_log with the following message repeatidly:

[notice] child pid XXXX exit signal Segmentation fault (11)

There's not allot to go by on-line, and most of the pages about it trail off to nothing. That said, I narrowed down the issue to PHP crashing when trying to unneeded dynamic libraries.

Looking at my php.ini (/etc/php.ini) I commented out all of the dynamic libraries loaded planning on commenting them back in as required. The two I had to take out where pdo.so and mysql .so .

Once these were removed all my web pages were being served fine, just as before the PHP/Apache update.













Panorama Theme by Themocracy

3 visitors online now
2 guests, 1 bots, 0 members
Max visitors today: 19 at 05:00 am UTC
This month: 26 at 04-04-2012 10:27 pm UTC
This year: 69 at 27-02-2012 09:56 am UTC
All time: 130 at 28-03-2011 10:40 pm UTC