Konfiguration af trådpuljer til Java-webservere

1. Introduktion

I denne vejledning ser vi på trådpoolkonfiguration til Java-webapplikationsservere som Apache Tomcat, Glassfish Server og Oracle Weblogic.

2. Servertrådspuljer

Servertrådspuljer bruges og administreres af en webapplikationsserver til en implementeret applikation. Disse trådpuljer findes uden for webcontaineren eller servlet, så de er ikke underlagt den samme kontekstgrænse.

I modsætning til applikationstråde findes der servertråde, selv efter at en implementeret applikation er stoppet.

3. Apache Tomcat

Først kan vi konfigurere Tomcats servertrådspool via Eksekutor konfigurationsklasse i vores server.xml:

minSpareTråde er den mindste poolen vil være, også ved opstart. maxThreads er den største poolen vil være inden serveren begynder at stille anmodninger i kø.

Tomcat standardindstiller disse til henholdsvis 25 og 200. I denne konfiguration har vi gjort trådpuljen lidt mindre end standard.

3.1. Indlejret Tomcat

På samme måde kan vi ændre en integreret Tomcat-server til Spring Boot for at konfigurere en trådpulje ved at indstille en applikationsegenskab:

server.tomcat.max-threads = 250

Fra og med Boot 2.3 er ejendommen ændret til:

server.tomcat.threads.max = 250

4. Glasfisk

Lad os derefter opdatere vores Glassfish-server.

Glassfish bruger en admin-kommando i modsætning til Tomcats XML-konfigurationsfil, server.xml. Fra prompten kører vi:

create-threadpool

Vi kan tilføje til create-threadpool flagene maxthreadpoolsize og minthreadpoolsize. De fungerer på samme måde som Tomcat minSpareThreads og maxThreads:

--maxthreadpoolsize 250 --minthreadpoolsize 25

Vi kan også specificere, hvor længe en tråd kan være inaktiv, før vi vender tilbage til puljen:

--idletimeout = 2

Og så leverer vi navnet på vores trådpulje i slutningen:

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

5. Weblogic

Oracle Weblogic giver os muligheden for at ændre en selvjusterende trådpulje med en WorkManager.

På samme måde som trådkøer styrer en WorkManager en trådpul som en kø. WorkManager tilføjer dog dynamiske tråde baseret på realtidskapacitet. Weblogic udfører regelmæssig analyse af kapacitet for at optimere trådudnyttelse.

Hvad betyder det for os? Det betyder, at mens vi muligvis ændrer trådpuljen, vil webserveren i sidste ende beslutte, om der skal skabes nye tråde.

Vi kan konfigurere vores trådpulje i Weblogic Admin Console:

Opdatering af Selvindstilling Minimum trådstørrelse og Selvjusterende tråd Maksimal poolstørrelse værdier angiver min og maks grænser for WorkManagers.

Læg mærke til Fastgjort tråd maks. Tid og Fastgjort trådtidsinterval værdier. Disse hjælper WorkManager med at klassificere fastgjorte tråde.

Nogle gange kan en langvarig proces forårsage ophobning af fastgjorte tråde. WorkManager vil gyde nye tråde fra trådpuljen for at kompensere. Enhver opdatering af disse værdier kan forlænge tiden, så processen er færdig.

Fastgjorte tråde kan være tegn på kodeproblemer, så det er altid bedst at tage fat på grundårsagen i stedet for at bruge en løsning.

6. Konklusion

I denne hurtige artikel så vi på flere måder at konfigurere trådløse puljer på applikationsserver.

Mens der er forskelle i, hvordan applikationsserverne administrerer de forskellige trådpuljer, konfigureres de ved hjælp af lignende koncepter.

Lad os endelig huske, at ændring af konfigurationsværdier for webservere ikke er passende rettelser til kode med dårlig udførelse og dårlige applikationsdesign.