קורס זה מלמד כיצד למדוד נכון ביצועים של תוכניות JAVA. פיתוח תוכנה ב-JAVA חייב לכלול התייחסות לביצועי התוכניות. היות ו-JAVA מנהלת בעצמה את הזיכרון חשוב למדוד נכון הן את התוכנה שכותבים מפתחי התוכנה והן את המנוע הפנימי של JAVA ה-JVM. בקורס זה תתנסה באופן מעשי בשימוש בכלי מדידה המודדים ביצועים של תוכנית בזמן ריצה. נלמד על שיטת ה-USE למדידת ביצועים בסביבת UNIX.
משך – יום
קהל יעד – תוכניתנים השולטים בשפת JAVA, ראשי צוותי פיתוח תוכנה ב-JAVA ומנהלי פרויקטי תוכנה המפותחים בשפת JAVA.
לקורסי Java נוספים במכללת סלע
קורס-JPA-תוך-שימוש-ב-Hibernate, קורס-תכנות-Java-לתוכניתנים-מנוסים, פיתוח-תוכנה-ב-Java, קורס-J2EE-לפתוח-מערכות-ארגוניות-גדולות, תבניות-תכנון-מערכות-J2EE, קורס-JAVA-מתקדם, תבניות-תכנון-ב-Java, תכנות-מתקדם-מאוד-ב-JAVA-תוך-שימוש-בתבניות-תכנון-מוכרות, תכנות-JAVA-מתקדם-מאוד, סדנת-8-Java, סביבת-הפיתוח-ב-JAVA, פיתוח-תוכנה-לאתרי-WEB-מתקדמים-ב-JAVA, מערכות-JAVA-ללא-תוכניתנים, ניתוח-ביצועים-של-אפליקציות-JAVA-בשדה, פיתוח-תוכנה-עם-שירותי-WEB-בשפת-JAVA, פיתוח-תוכנה-עם-טכנולוגיית-Object-Oriented-בסביבת-JAVA, Spring-מתקדם, פיתוח-תוכנה-ב-JAVA-תוך-ששימוש-ב-Spring, פיתוח-תוכנה-ב-JAVA-מבוסס-בדיקות, שימוש-ב-XML-לתוכניתנים
לרשימה של כל קורסי הייטק
תכנים
מדדי ביצועים ושיטת USE
לינוקס ו- JVM מקורות מידע: tracepoints, {k, u} בדיקות, USDT, JMX, JVMTI, Java SA, JFR, יומני GC / JIT
לינוקס רשימת JVM לביצוע: top, sar, free, iostat, pidstat, vmstat, jstack, jstat (מבוסס על hsperfdata), jcmd, jattach
לינוקס perf, דגימה CPU, מקבל ערימת דוחות, בעיה עם סמלים
יצירת מפות perf עם perf-map-agent, מסגרות מוטבעות, פרטי מקור
ויזואליזציה של פרופילים JVM עם גרפים להבה
LAB: אפיון מעבד עם ביצועים, perf-map-agent, וגרפים להבה
JVMTI פרופיל עם סוכן & jattach: GetAllStackTraces, יוצאים מן הכלל, מעמדי בכיתה, צג המחלוקת וכו '
מלא מחסנית JVM פרופיל עם async- Profiler, איך זה עובד, היתרונות והחסרונות
LAB: פרופיל עם async- Profiler (גם במיכל לאחר הפעלת perf_event_open)
מבוא ל- BPF
תרחישי BPF ו- BCC Toolkit, כלים ספציפיים ל- Java, בדיקות JVM USDT, -XX: + ExtendedDTraceProbes
כלים ייעודיים BCC: fileslower, opensnoop, gethostlatency, runqlat, cpudist
LAB: נפתח קובץ Snooping fail
כללי-מטרה BCC כלים: עקבות, argdist, funccount, stackcount, funclatency
LAB: מעקב אחר שאילתות מסד הנתונים MySQL באמצעות בדיקות USDT באמצעות uprobes
פרופיל הקצאת heap (מבוסס על הדגימה TLAB) עם async- פרופילר לעומת funccount / stackcount לעומת grav
LAB: הקצאה מוגזמת של פרופילי GC ו- GC
(אם הזמן מאפשר) פרופיל מיכלים: כלי ריצה על המארח (מפות, סמלים, שבילים), BCC "עובד רק"
(אם הזמן מאפשר) בעיות ספציפיות למכולות: מחנקי שיתוף CPU, ערימת ג 'אווה לשינוי cgroup
(אם הזמן מתיר) LAB: זיהוי מעכבי CPU באמצעות cgroup / cpu.stat קובץ, runqlat, cpudist
(אם הזמן מאפשר) LAB: זיהוי OOM להרוג עקב תהליך Java באמצעות יותר ממגבלת הזיכרון מיכל
(אם הזמן מאפשר) פיתוח כלי BCC מותאמים אישית
(אם הזמן מאפשר) LAB: פיתוח צג המחלוקת
דרישות
היכרות עם JVM: אוסף JIT, GC, חוטים
היכרות עם מושגי מערכת ההפעלה לינוקס: תהליכים, חוטים, זיכרון וירטואלי
מטרות
ניסיון בפיתוח ב- Java מומלץ, אך רקע הפעלה / ניהול מוזמן גם הוא
ניתוח ניצול CPU ומציאת צווארי בקבוק
חקירת מערכת I / O אירועים
אבחון בעיות GC והקצאה
חזרה