Løs» For Mange Åpne filer feil «og» innfødt OutOfMemory grunn til å ikke opprette tråd » problemer I WebSphere Application Server kjører På Linux

Kropp

image

Vi mottar ganske mange problem poster ( PMRs) / service forespørsler (SRs) for innfødte OutOfMemory problemer I WebSphere Application Server og en av de mest kjente innfødte OOM problemer skjer spesielt På Linux OS på grunn av utilstrekkelig ulimit-u(NPROC) verdi.
vi får også en god del PMRs for» for mange Åpne Filer » feil For WebSphere Application Server kjører På Linux.
med enkel feilsøking og ulimit kommando tuning, kan du enkelt unngå å åpne EN PMR MED IBM støtte for disse problemene.

1) Hva er ulimit I Linux?
kommandoen ulimit lar deg kontrollere brukerens ressursgrenser i systemet, for eksempel prosessdatastørrelse, prosess virtuelt minne og prosessfilstørrelse, antall prosess etc.

2) Hva skjer når innstillingene i denne kommandoen ikke er satt opp riktig?
Ulike problemer skje som innfødt OutOfMemory, For Mange Åpne filer feil, dump filer blir ikke generert helt etc.

3) Hvordan kan du sjekke gjeldende ulimit-innstillinger?
det finnes ulike måter å sjekke gjeldende innstillinger på:

a) fra ledeteksten, problemet
$ ulimit-a
Vi kan se lignende utdata som nedenfor.
kjernefilstørrelse (blokker, -c) 0
dataseg-størrelse (kbyte,- d) ubegrenset
planleggingsprioritet (- e) 0
filstørrelse (blokker,- f) ubegrenset
ventende signaler (- i) 32767
maks. låst minne (kbyte,- l) 32
maks. minnestørrelse (kbyte,- m) ubegrenset
åpne filer (- n) 1024
rørstørrelse (512 byte,- p) 8
posix meldingskøer (byte,-q) 819200
sanntidsprioritet (-r) 0
stakkstørrelse (kbytes, -s) 10240
cpu-tid (sekunder,- t) ubegrenset
maks brukerprosesser (- u) 50
virtuelt minne (kbytes,- v) ubegrenset
fillås (- x) ubegrenset
dette vil vise alle gjeldende innstillinger som er angitt for gjeldende påloggingsøkt og som standard myke grenser vil bli vist. Grenser Kan Myke Og Harde.
Harde grenser er maksimumsgrensen som kan konfigureres. Bare rotbrukeren kan øke harde grenser, selv om andre brukere kan redusere dem. Myke grenser kan settes og endres av andre brukere, men de kan ikke overskride de harde grensene.
hvis du vil finne bestemte grenseverdier problemet
ulimit-Sa
for gjeldende myk grenseverdi.
ulimit-Ha
for gjeldende hard grenseverdi.

b) hvis Du vet PROSESSEN ID (PID) Av WebSphere Application Server som skal undersøkes, kan du også inspisere følgende fil.
Plassering:/proc / < PID >
Fil: grenser
innholdet i denne filen ligner utgangen av kommandoen «ulimit-a».
denne filen vil ha en liste over ulimit-parametere og tilhørende verdier for den angitte PID-EN.
c) hvis du kjenner prosess-IDEN til serveren du vil sjekke gjeldende ulimit-innstillinger, kan Du ta En Javacore ved å utstede
kill -3 <PID >
du kan åpne Denne Javacore i en hvilken som Helst tekstredigerer (Som NotePad++, Ultra Edit etc.)
og søk etter ulimit og det vil ta deg ulimit-delen.
Eksempel på ulimit innstillinger som det er sett Fra En Javacore.
Brukerbegrensninger (i byte unntatt NOFILE og NPROC)
————————————————————–
type myk grense hard grense
rlimit_as 11788779520 ubegrenset
RLIMIT_CORE 1024 ubegrenset
rlimit_cpu ubegrenset ubegrenset
RLIMIT_DATA ubegrenset ubegrenset
rlimit_fsize ubegrenset ubegrenset
RLIMIT_LOCKS ubegrenset ubegrenset
RLIMIT_MEMLOCK ubegrenset ubegrenset
rlimit_nofile 18192 18192
rlimit_nproc 79563 79563
rlimit_rss 8874856448 ubegrenset
RLIMIT_STACK 33554432 UBEGRENSET
HVIS DU VIL FINNE DE GLOBALE INNSTILLINGENE, kontroller filen nedenfor i linux.
/etc/sikkerhet / grenser.conf.
eventuelle endringer i disse globale konfigurasjonsgrenser-filene skal utføres av systemansvarlig.
for å finne ut mer om hver innstilling i ulimit-kommandoen og også for å finne ut om ulimit-kommandoen på ulike OS, se denne technote: Retningslinjer for innstilling av ulimits (WebSphere Application Server)

4) Hva slags innfødt OOM forventes på grunn av utilstrekkelige ulimit-innstillinger?
En ut av minnedumphendelse med en «Mislyktes å lage en tråd» kommer til å skje.
Eksempel: Nedenfor vises meldingen I Javacore.
» systhrow «(00040000) Detalj»java/lang/OutOfMemoryError»
» Kunne ikke opprette en tråd: retVal -1073741830, errno 12 » mottatt
errno 12 er en faktisk innfødt OOM på en starttråd.
noen ganger kan det ikke opprettes en tråd i Serverlogger som SystemOut.logg, SystemErr.logg etc., OG også I ffdc logger og denne feilen indikerer en innfødt OutOfMemory skjedde under etableringen av ny tråd.

5) Hva er årsaken til at denne feilen skjer?
årsaken er at den nåværende ulimit-u (NPROC) – verdien er for lav som forårsaker den.
nproc-grensen teller vanligvis bare prosesser på en server for å bestemme dette nummeret. Linux-systemer som kjører WebSphere Application Server er et spesielt tilfelle. Nproc-grensen på Linux teller antall tråder i alle prosesser som kan eksistere for en gitt bruker. For de fleste Tilfeller av eldre Versjoner Av Linux vil denne verdien bli misligholdt til rundt 2048. For Ut Av boksen Red Hat Enterprise Linux (RHEL) 6 standardverdien for nproc vil bli satt til 1024.
denne lave standardinnstillingen for større systemer tillater ikke nok tråder i alle prosesser.

6) hvordan fikse dette problemet?
WebSphere Application Server Support anbefaler at du setter ulimit-u eller nproc til en verdi på 131072 når du kjører På Linux for å ta hensyn til alle de delte trådene i prosesser som kan opprettes.
den kan økes midlertidig for gjeldende økt ved å sette
ulimit-u 131072
som setter verdien for myk grense.
hvis du vil angi både myke og harde grenser, utsteder du
ulimit-Su 131072 for myk grense.
ulimit-Hu 131072 for hard grense.
For å sette det globalt må Linux-systemadministratoren redigere
/etc/security / limits.conf
Vi har denne technote som forklarer dette: Utilstrekkelig ulimit-u (NPROC) Verdi Bidrar Til Innfødt OutOfMemory

7) hva med «For Mange Åpne Filer» – feil?
denne feilen indikerer at alle tilgjengelige filhåndtak for prosessen er brukt(dette inkluderer også stikkontakter).
Eksempel: Feil som ligner Nedenfor vil bli sett Serverlogger.
java.io.ioexception: For Mange åpne filer
prefs W kunne ikke låse bruker prefs. UNIX feilkode 24.

8) Hvorfor denne feilen skjer?
Det kan skje hvis gjeldende antall Åpne Filer grensen er for lav, eller hvis dette er et resultat av filhåndtak blir lekket av noen del av programmet.

9) hvordan fikse dette?
IBM support anbefaler antall åpne filer sette ulimit – n verdi For WebSphere Application Server som kjører På Linux som 65536 for både myke og harde grenser.
ulimit-Sn 65536
ulimit-Hn 65536

10) Hva om det er en filbeskrivelseslekkasje i søknaden?
På Linux kan vi finne ut om noen spesielle åpne filer vokser over en periode ved å ta under data med lsof-kommandoen mot han problematiske JVM-PROSESS-ID med jevne mellomrom.
lsof-p-r > lsof.out
utgangen vil gi deg alle de åpne filene for den angitte PID. Du vil kunne bestemme hvilke filer som åpnes og hvilke filer som vokser over tid.
Alternativt kan du liste innholdet i filbeskrivelsene som en liste over symbolske lenker i følgende katalog, der DU erstatter PID med
prosess-ID. Dette er spesielt nyttig hvis du ikke har tilgang til lsof-kommandoen:
ls-al / proc / PID / fd
Relatert technote: for Mange Åpne Filer feilmelding

11) Er det noe annet å bli innstilt?
Vi har en innstilling vi kan stille På Linux ved hjelp av Pid_max som er sjelden og forekommer bare store miljøer. Hvis du ikke bruker et stort miljø, kan du hoppe over dette trinnet.
pid_max-innstillingen er for intern grense for maksimalt antall unike prosessidentifikatorer systemet støtter.
standardverdien er 32 768, og dette er tilstrekkelig for de fleste kunder.
på store miljøer med stort antall prosesser er det en mulighet for at denne grensen kan nås, og
native OutOfMemory vil skje med lignende melding I
Javacore med mislyktes i å skape tråd errno 11.
Eksempel:
Dump Event «systhrow» (00040000) Detalj «java/lang / OutOfMemoryError»
» Kunne ikke opprette en tråd: retVal -106040066, errno 11 » mottatt
for å finne gjeldende pid_max-verdi På Linux.
cat / proc/sys / kernel / pid_max
for å øke den,problemet
sysctl-w kernel.pid_max= < Verdi>
noen ganger kan standard 32,768 nås på grunn av noen trådlekkasje/s, noe som forårsaker innfødt OOM. I dette tilfellet må du fikse denne tråden pool lekkasje for å løse native OOM.
Relaterte technotes:
Feilsøking av innfødte minneproblemer
Potensiell opprinnelig minnebruk i WebSphere Application Server thread pools
Sammendrag:
Sørg for at du har ulimit-innstillingene nedenfor På Linux for å unngå» for mange åpne filer feil «og» innfødt ut av minne » problemer på grunn av feil i å opprette en tråd.
Brukerbegrensninger(i byte unntatt NOFILE og NPROC)
soft_limit hard_limit
RLIMIT_NOFILE 65536 65536
RLIMIT_NPROC 131072 131072

12) Er det noe annet å sjekke?
IBM support anbefaler underverdiene for alle ulimit-innstillinger For WebSphere Application Server som kjører På Linux, som inkluderer innstillingene vi diskuterte så langt.
Brukerbegrensninger (i byte unntatt NOFILE og NPROC)
type myk grense hard grense
RLIMIT_AS ubegrenset ubegrenset
RLIMIT_CORE ubegrenset ubegrenset
rlimit_cpu ubegrenset ubegrenset
RLIMIT_DATA ubegrenset ubegrenset
rlimit_fsize ubegrenset ubegrenset
RLIMIT_LOCKS ubegrenset ubegrenset
rlimit_memlock 65536 65536
rlimit_nofile 65536 65536
rlimit_nproc 131072 131072

13) Hva er neste?
Sørg for å ha de ovennevnte diskuterte innstillingene på Alle WebSphere Application Server JVMs som DMGr, NodeAgent og AppServers og start JVMs hvis innstillingene ble gjort globalt eller logg av og logg inn igjen med samme bruker hvis endringene ble gjort i den nåværende økten (shell).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.