Solaris memory leaks due shared memory segments
Äskettäin meillä oli ongelma yhden Solaris global Zonen kanssa, joka toimii Oracle/SAP: n kanssa .Normaalisti järjestelmä käyttää ajaa 40GB~ 50GB~ vapaata fyysistä muistia.Mutta kun meillä oli pehmeä roikkua, huomasimme, että järjestelmä tekee enemmän hakulaite levylle ja vapaa fyysinen muisti laski 6-8 GT.
ajoimme lähes kaikki seurantatyökalut selvittääksemme, mikä prosessi kuluttaa muistia, mutta tuloksetta .Lopulta otimme asian esille Oraclen kanssa löytääksemme syyn .
järjestelmän kokoonpano:
järjestelmän fyysinen muisti :256GB
Swap: 480GB
top,prstat, käytetty fyysinen muisti on lähes noin 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
lopulta Oraclen ytimen insinööri havaitsi, että jaettuja muistisegmenttejä kului 103 gigatavua fyysistä muistia. Että 35GB muistia käytetään virheellinen muisti segmentti, jossa ei prosessi käytti sitä .
# ipcs -ZmA |awk '{x=x+} END {print x}'
111073374219
muunnetaan GB: ksi
#bc
111073374219/1024/1024/1024
103.44514084886759519577
hän havaitsi, että on olemassa pari yhteistä muistisegmenttiä, jotka eivät ole käytössä, mutta pitävät muistitilaa.
# 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
jaettu muistisegmentti 83886120 kulutettu 34gb & 83886125 kulutettu 200MB jos ei ole prosessia käyttävät sitä .Korostettu kenttä selittää enemmän. Kolme ensimmäistä segmenttiä ovat voimassa yhden koska on niin paljon prosessi käytti sitä (1220) ja kaksi viimeistä riviä jaettu muisti segmentit eivät käytä mitään prosessia. (0)
ISM: n määrä kiinnittyy niihin liittyviin jaettuihin muistisegmentteihin.
# ipcrm -m 83886120
# ipcrm -m 83886125
sen poistamisen jälkeen järjestelmä palautui normaaliksi ja vaihto pienensi erää ja sai lähes 50 Gt vapaata fyysistä muistia .