Konfigurere trådbassenger for Java-webservere

1. Introduksjon

I denne opplæringen tar vi en titt på trådkonfigurasjon for Java-webapplikasjonsservere som Apache Tomcat, Glassfish Server og Oracle Weblogic.

2. Servertrådsbassenger

Servertrådbassenger brukes og administreres av en webapplikasjonsserver for et distribuert program. Disse trådbassengene eksisterer utenfor nettbeholderen eller servletten, så de er ikke underlagt samme kontekstgrense.

I motsetning til applikasjonstråder eksisterer servertråder selv etter at et distribuert program er stoppet.

3. Apache Tomcat

Først kan vi konfigurere Tomcats servertrådbasseng via Leder konfigurasjonsklasse i vår server.xml:

minSpareTråder er det minste bassenget vil være, inkludert ved oppstart. maxTråder er det største bassenget vil være før serveren begynner å stille forespørsler i kø.

Tomcat har disse som standard henholdsvis 25 og 200. I denne konfigurasjonen har vi gjort trådgruppen litt mindre enn standard.

3.1. Innebygd Tomcat

På samme måte kan vi endre en innebygd Tomcat-server for Spring Boot for å konfigurere en trådgruppe ved å sette en applikasjonsegenskap:

server.tomcat.max-threads = 250

Fra og med Boot 2.3 har eiendommen endret seg til:

server.tomcat.threads.max = 250

4. Glassfisk

La oss deretter oppdatere Glassfish-serveren vår.

Glassfish bruker en admin-kommando i motsetning til Tomcats XML-konfigurasjonsfil, server.xml. Fra ledeteksten kjører vi:

create-threadpool

Vi kan legge til create-threadpool flaggene maxthreadpoolsize og minthreadpoolsize. De fungerer på samme måte som Tomcat minSpareTråder og maxTråder:

--maxthreadpoolsize 250 --minthreadpoolsize 25

Vi kan også spesifisere hvor lenge en tråd kan være inaktiv før vi går tilbake til bassenget:

--idletimeout = 2

Og så gir vi navnet på trådgruppen vår på slutten:

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

5. Weblogic

Oracle Weblogic gir oss muligheten til å endre et selvjusterende trådbasseng med en WorkManager.

På samme måte som trådkøer, administrerer en WorkManager en trådpool som en kø. WorkManager legger imidlertid til dynamiske tråder basert på gjennomstrømning i sanntid. Weblogic utfører regelmessig analyse av gjennomstrømning for å optimalisere trådutnyttelsen.

Hva betyr dette for oss? Det betyr at mens vi kan endre trådgruppen, vil webserveren til slutt bestemme om de skal gyte nye tråder.

Vi kan konfigurere trådgruppen vår i Weblogic Admin Console:

Oppdaterer Selvjustering Minimum trådstørrelse og Selvjusterende tråd Maksimal bassengstørrelse verdier angir min og maks grenser for WorkManagers.

Legg merke til Stuck Thread Max Time og Fast gjengetidsintervall verdier. Disse hjelper WorkManager med å klassifisere faste tråder.

Noen ganger kan en langvarig prosess føre til opphopning av faste tråder. WorkManager vil gyte nye tråder fra trådbassenget for å kompensere. Enhver oppdatering av disse verdiene kan forlenge tiden slik at prosessen kan fullføres.

Stakkede tråder kan være en indikasjon på kodeproblemer, så det er alltid best å løse årsaken i stedet for å bruke en løsning.

6. Konklusjon

I denne raske artikkelen så vi på flere måter å konfigurere trådtjenestepassene på.

Selv om det er forskjeller i hvordan applikasjonsserverne administrerer de forskjellige trådbassengene, konfigureres de ved hjelp av lignende konsepter.

Til slutt, la oss huske at endring av konfigurasjonsverdier for webservere ikke er passende løsninger for kode med dårlig ytelse og dårlig applikasjonsdesign.