לפניכם הגרסה העברית שנוצרה באופן אוטומטי. לקריאת הגרסה המקורית באנגלית
תיאור
Node.js, הפופולרי חוצות פלטפורמת JavaScript מסגרת שרת, גדלה הפופולריות ואת קנה המידה עד לנקודה שבה מאוד מאתגר, לא טריוויאלי, ייצור רק בעיות צצים בסביבות הפריסה המורכבת. למרות Node.js מצויד מובנה V8 Profiler, הוא מוגבל היקף למעבד הזמן, אשר אינו מהווה חשבון עבור רוב בעיות הביצועים Node.js. כמו כן, פרופילים בסביבות הייצור דורש כלים פולשניים עם תקורה נמוכה, אשר אינם דורשים הפעלה מחדש של יישום למען פרופיל. בסדנא זו, נלמד, נבצע וניסוי עם כלי הצומת Node.js המיועדים לשימוש הייצור. נתחיל מתוך סקירה כללית של יעדי ביצועים וערכים על מערכות לינוקס, תוך שימוש בשיטה הנפוצה USE (Utilization, Saturation, Error). אנו נבנה רשימה פשוטה לאימות ביצועי היישום Node.js, ולמצוא את האזור להתמקד בחקירה קרובה יותר. לאחר מכן, אנו ניסוי עם Profiler V8 מובנה, וללמוד כיצד לנתח את הפלט יומן שלה כדי להתמקד ב- CPU נקודות חמות של ריצה V8, קוד JavaScript שלך, או מודולים חיצוניים. אנו גם לחקור את לינוקס ביצועים רב כלי, אשר יכול לבצע פרופיל כללי מטרת המעבד, וכיצד לקבל את זמן הריצה Node.js לייצר מידע סמלי הנדרש כדי לפתור עקבות מחסנית הנפלטים על ידי perf.
אנו דמיינו עקבות מחסנית באמצעות תרשימי להבה, ונבין היכן צוואר בקבוקי המעבד. אנו גם מסתכלים על ניתוח dump הליבה עבור קריסות דליפות זיכרון, ולזהות חפצים גל באמצעות תוסף llnode עבור lldb. במחצית השנייה של הסדנה, נדבר על תרחישים מורכבים יותר: אבחון שגיאות לסירוגין בעת התחברות למסד נתונים או שאילתות ריצה, ניטור עומס קלט / פלט של המערכת, הבנת הסיבות לאיסוף אשפה מוגזם V8, הבנת הסיבה לולאת האירוע שלך חוט חסום, ועוד. כמה משימות אלה ניתן לגשת באמצעות perf, אבל thers דורשים דימום קצה הטכנולוגיה - BPF ו BCC. BPF היא טכנולוגיה חדשה לינוקס לינוקס המאפשר נמוך מעל, סופר יעיל ניטור הייצור כלי מעקב. נשתמש בכמה מהכלים ונבין כיצד לבנות את הכלים שלנו לפי הצורך, בסדרה נוספת של מעבדות מעשיות. לבסוף, אנחנו מדברים על איסוף אשפה Node.js דליפות זיכרון, וכיצד לזהות דליפות זיכרון באמצעות Snaphots גל וכלי פיתוח של Chrome.
קהל יעד
מפתחי Node.js, מנהלי מערכות, מהנדסי ייצור אחראים ליישומים Node.js על לינוקס
לימודי Production Diagnostics for Node Applications
סילבוס תוכנית הלימודים - מבנה ונושאים
שיטת USE
כלי הצפייה Node.js
דגימה לעומת מעקב
CPU פרופיל עם V8
LAB: צומת פרופיל עם V8 [node-prof.md]
לינוקס ו- CPU הדגימה
ויזואלית פרופילים CPU עם גרפים להבה
LAB: הצומת פרופיל עם perf [perf.md # task-5-profiling-nodejs-code]
LAB: הצומת דולף האטה [node-slowdown.md]
לינוקס הליבה dumps
יצירת הליבה dumps על לקרוס
יצירת הליבה dumps עם gcore
Node.js הליבה dump ניתוח עם llnode
LAB: ניתוח צומת הליבה dump עם llnode [node-coredump.md]
מבוא ל- BPF
BPF תרחישים ערכת כלים BCC
בדיקות USDT
LAB: הצומת ו USDT בדיקות [bpf-usdt.md # task-1, # task-2]
LAB: צומת שאילתות איטיות של MySQL [bpf-nodemysql.md]
ניתוח זמן חסוי
LAB: צומת ניתוח זמן חסום [bpf-nodeblocked.md]
LAB: קובץ הצומת נפתח [bpf-nodeopens.md]
LAB: צומת בקשות HTTP איטיות [node-slowhttp.md]
LAB: צומת שאילתות DNS איטיות [node-slowdns.md]
אוסף אשפה Node.js
בדיקת ערמה מן המזבלה Node.js הליבה
גל תצלומים
LAB: אוספי אשפה בצומת [bpf-nodegc.md]
LAB: צומת דליפת זיכרון ניתוח [node-memleak.md]
היכרות עם מפתחי Node.js
מיומנויות בסיסיות של לינוקס
לזהות צווארי בקבוק ביישומים Node.js
פרופיל Node.js יישומים
ניתוח Node.js הליבה dumps
לחקור Node.js דליפות זיכרון