Solaris minnesläckor på grund av delade minnessegment

nyligen hade vi ett problem med en av Solaris global zone som körs med Oracle/SAP .Normalt används systemet för att köra med 40 GB~ till 50 GB~ gratis fysiskt minne.Men när vi hade en mjuk hängning fann vi att systemet gör mer personsökning till disk och gratis fysiskt minne gick ner till 6 till 8GB.
vi körde nästan alla övervakningsverktyg för att hitta vilken process som förbrukar minnet men ingen tur .Sedan hade vi äntligen tagit upp fallet med oracle för att hitta grundorsaken .
systemkonfiguration:
systemets fysiska minne :256GB
Byt: 480GB

enligt toppen,prstat, används fysiskt minne är nästan runt 200GB~ .

root@ ~]# sar -r 5 5
SunOS 5.10 Generic_144500-19 sun4u 09/05/2012
16:40:11 freemem freeswap
16:40:16 885031 399256061
16:40:22 883764 399240091
16:40:27 882266 399212586
16:40:33 882487 399223267
16:40:38 882453 399221275
Average 883193 399230658
root@ ~]# echo "::memstat" | mdb -k
Page Summary Pages MB %Tot
----------- ---------------- ---------------- ----
Kernel 1696877 13256 5%
Anon 24796106 193719 75%
Exec and libs 150104 1172 0%
Page cache 5814314 45424 18%
Free (cachelist) 437928 3421 1%
Free (freelist) 79348 619 0%
Total 32974677 257614
Physical 32952777 257443

slutligen Oracle kernel engineer fann att delade minnessegment förbrukades 103 GB fysiskt minne. I det 35 GB minne som används av ogiltigt minnessegment där ingen process använde den .

# ipcs -ZmA |awk '{x=x+} END {print x}'
111073374219

konvertera till GB

#bc
111073374219/1024/1024/1024
103.44514084886759519577

han fann att det finns några delade minnessegment som inte används men håller minnesutrymmet.

# ipcs -mA |grep myora1
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME ISMATTCH
m 19777443 0x8795c49c --rw-rw---- myora1 db myora1 db 1220 24576 23178 21487 9:15:48 9:16:07 14:15:49 1220
m 19777472 0 --rw-rw---- myora1 db myora1 db 1220 34292629504 23178 21487 9:15:48 9:16:07 14:15:58 1220
m 20331903 0 --rw-rw---- myora1 db myora1 db 1220 201326592 23178 21487 9:15:48 9:16:07 14:16:47 1220
m 83886120 0 --rw-rw---- myora1 db myora1 db 0 34292629504 24490 24490 9:56:37 9:56:37 9:56:09 0
m 83886125 0 --rw-rw---- myora1 db myora1 db 0 201326592 24490 24490 9:56:09 9:56:37 9:56:09 0

delat minnessegment 83886120 förbrukat 34GB & 83886125 förbrukat 200MB där det inte finns någon process använder den .Markerat fält kommer att förklara mer. De tre första segmenten är giltiga eftersom det finns så många processer som använde det(1220) och de två sista raderna av delade minnessegment använde inte någon process. (0)

NATTCH (A,A,o)

antalet processer kopplade till det associerade delade minnessegmentet.

ISMATTCH (a,i)
antalet ism som bifogas de associerade delade minnessegmenten.

så efter att ha fått bekräftelsen från databasteamet har vi tagit bort det ogiltiga delade minnessegmentet med kommandot nedan .
# ipcrm -m 83886120
# ipcrm -m 83886125

efter att ha tagit bort det, systemet tillbaka till det normala och byta minskat mycket och fick nästan 50GB gratis fysiskt minne .

Tack för att du läste den här artikeln.Lämna gärna en kommentar om du har några tvivel, Jag kommer tillbaka till dig så snart som möjligt.

Leave a Reply

Din e-postadress kommer inte publiceras.