Solaris minnelekkasjer på grunn av delte minnesegmenter
nylig hadde Vi et problem med En Av Solaris global zone som kjører Med Oracle / SAP .Normalt bruker systemet til å kjøre MED 40GB~ TIL 50gb ~ gratis fysisk minne.Men da vi hadde en myk heng, fant vi ut at systemet gjor mer paging til disk og fri fysisk minne gikk ned til 6 TIL 8GB.
vi kjørte nesten alle overvåkingsverktøyene for å finne hvilken prosess som bruker minnet, men ikke flaks .Så til slutt hadde vi reist saken med oracle for å finne grunnårsaken .
systemkonfigurasjon:
System Fysisk Minne:256gb
Bytt :480GB
Som per topp, prstat, brukt fysisk minne er nesten RUNDT 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
Endelig Fant Oracle kernel engineer At delte minnesegmenter ble konsumert 103 GB fysisk minne. I DET 35gb-minnet som brukes av ugyldig minnesegment der ingen prosess brukte det .
# ipcs -ZmA |awk '{x=x+} END {print x}'
111073374219
Konvertere TIL GB
#bc
111073374219/1024/1024/1024
103.44514084886759519577
han fant at det er par delte minnesegmenter som ikke er i bruk, men holder minneplassen.
# 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
delt minne segment 83886120 forbrukes 34gb & 83886125 forbrukes 200MB der det ikke er noen prosess bruker den .Uthevet felt vil forklare mer. Første tre segmenter er gyldige siden det er så mange prosesser som brukte det (1220) og de to siste linjene med delte minnesegmenter brukte ikke noen prosess. (0)
ANTALL ISM festes til de tilknyttede delte minnesegmentene.
# ipcrm -m 83886120
# ipcrm -m 83886125
etter å ha fjernet det, systemet tilbake til normal og bytte redusert mye og fikk nesten 50gb ledig fysisk minne .