Solaris memory leaks due shared memory segments
onlangs hadden we een probleem met een van de Solaris global zone die draait met Oracle/SAP .Normaal systeem gebruiken om te draaien met 40GB~ tot 50GB~ van gratis fysiek geheugen.Maar toen we een zachte hang hadden, vonden we dat het systeem meer paging naar de schijf doet en gratis fysiek geheugen ging naar 6 tot 8GB.
we hebben bijna alle monitoring tools uitgevoerd om uit te vinden welk proces het geheugen in beslag neemt, maar geen geluk .Uiteindelijk hadden we de zaak met oracle besproken om de oorzaak te vinden .
systeemconfiguratie:
systeem fysiek geheugen: 256GB
Swap: 480GB
volgens top, prstat, gebruikt fysiek geheugen is bijna ongeveer 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
ten slotte ontdekte Oracle kernel engineer dat gedeelde geheugensegmenten 103 GB fysiek geheugen verbruikten. In dat 35GB geheugen gebruikt door ongeldig geheugen segment waar geen proces werden met behulp van het .
# ipcs -ZmA |awk '{x=x+} END {print x}'
111073374219
converteren naar GB
#bc
111073374219/1024/1024/1024
103.44514084886759519577
hij ontdekte dat er een paar gedeelde geheugensegmenten zijn die niet in gebruik zijn maar de geheugenruimte bevatten.
# 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
gedeeld geheugen segment 83886120 verbruikt 34 GB & 83886125 verbruikt 200MB wanneer er geen proces wordt gebruikt .Gemarkeerde veld zal meer uitleggen. De eerste drie segmenten zijn geldig omdat er zoveel processen zijn die het gebruikten (1220) en de laatste twee regels van gedeelde geheugensegmenten werden door geen enkel proces gebruikt. (0)
het aantal ISM-attaches aan de bijbehorende gedeelde geheugensegmenten.
# ipcrm -m 83886120
# ipcrm -m 83886125
na het verwijderen van het systeem terug naar normaal en ruilen verminderde lot en kreeg bijna 50 GB vrij fysiek geheugen .