קביעת תצורה של מאגרי חוטים לשרתי אינטרנט של Java

1. הקדמה

במדריך זה, נסתכל על תצורת מאגר החוטים עבור שרתי יישומי Java כגון Apache Tomcat, Glassfish Server ו- Oracle Weblogic.

2. בריכות חוט שרתים

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

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

3. אפאצ'י טומקט

ראשית, אנו יכולים להגדיר את מאגר החוטים של השרת של Tomcat דרך ה- מוציא להורג מחלקת תצורה אצלנו server.xml:

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

Tomcat ברירת המחדל היא 25 ו- 200 בהתאמה. בתצורה זו הפכנו את מאגר האשכולות לקטן מעט יותר מברירת המחדל.

3.1. טומקט מוטבע

באופן דומה, אנו יכולים לשנות שרת Tomcat מוטבע עבור Spring Boot כדי להגדיר מאגר אשכולות על ידי הגדרת מאפיין יישום:

server.tomcat.max-threads = 250

החל מ- Boot 2.3, המאפיין השתנה ל:

server.tomcat.threads.max = 250

4. דג זכוכית

לאחר מכן, בואו ונעדכן את שרת Glassfish שלנו.

Glassfish משתמש בפקודת admin בניגוד לקובץ התצורה XML של Tomcat, server.xml. מההנחיה אנו מריצים:

ליצור- threadpool

אנחנו יכולים להוסיף ל ליצור- threadpool הדגלים גודל הבריכה ו גודל הבריכה. הם מתפקדים באופן דומה לטומקט minSpareThreads ו maxThreads:

--maxthreadpoolsize 250 --minthreadpoolsize 25

אנו יכולים גם לציין כמה זמן חוט יכול להיות לא פעיל לפני החזרה לבריכה:

--idletimeout = 2

ואז אנו מספקים את השם של מאגר האשכולות שלנו בסוף:

asadmin> create-threadpool --maxthreadpoolsize 250 - minthreadpoolsize 25 --idletimeout = 2 threadpool-1

5. Weblogic

Oracle Weblogic נותן לנו את היכולת לשנות מאגר חוטים עם כוונון עצמי באמצעות WorkManager.

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

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

אנו יכולים להגדיר את מאגר האשכולות שלנו במסוף הניהול של Weblogic:

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

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

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

שרשור תקוע יכול להעיד על בעיות קוד, לכן עדיף תמיד לטפל בסיבה הבסיסית במקום להשתמש בפתרון.

6. מסקנה

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

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

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