Índice del artículo

Para identificar procesos que consuman mucha memoria, podemos usar el comando ps, al igual como lo haciamos para identificar procesos con alto consumo de CPU, solo que en este caso hacemos referencia a las columna de memoria.

[oracle@m9 ~]$ ps -e -o pmem,pid,user,tty,args | grep -i oracle | sort -n -k 1 -r | head

 8.6 29529 oracle   ?        oracleorc11g (LOCAL=NO)
 8.4 30428 oracle   ?        oracleorc11g (LOCAL=NO)
 7.3 30445 oracle   ?        oracleorc11g (LOCAL=NO)
 6.8 18851 oracle   ?        oracleorc11g (LOCAL=NO)

Y para poder buscar el proceso que esta ocupando más memoria en dentro de oracle, ejecutamos el siguiente query dando el valor del proceso que esta consumiendo más memoria, en mi caso 29529.

SET LINESIZE 80 HEADING OFF FEEDBACK OFF
SELECT
  RPAD('USERNAME : ' || s.username, 80) ||
  RPAD('OSUSER   : ' || s.osuser, 80) ||
  RPAD('PROGRAM  : ' || s.program, 80) ||
  RPAD('SPID     : ' || p.spid, 80) ||
  RPAD('SID      : ' || s.sid, 80) ||
  RPAD('SERIAL#  : ' || s.serial#, 80) ||
  RPAD('MACHINE  : ' || s.machine, 80) ||
  RPAD('TERMINAL : ' || s.terminal, 80) ||
  RPAD('SQL TEXT : ' || q.sql_text, 80)
FROM v$session s
    ,v$process p
    ,v$sql     q
WHERE s.paddr          = p.addr
AND   p.spid           = '&PID'
AND   s.sql_address    = q.address(+)
AND   s.sql_hash_value = q.hash_value(+);

Otro forma es usando el comando vmstat (virtual memory statistics)

[oracle@m9 ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 6  0 224688  68784  44952 1279624    1    1    49   126   14    4 13  9 77  1  0

Si observamos que nuestro servidor esta haciendo uso de mucho swapping (columnas si y so) entonces tenemos un cuello de botella en la memoria. En mi caso no lo tengo, pues los valores son practicamente 0:

[oracle@m9 ~]$ vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0 224692  70412  45776 1265088    1    1    49   126   14    5 13  9 77  1  0
 5  0 224692  70024  45788 1265252    0    0     2   252 4166 8604 14 45 41  0  0
 3  0 224692  74124  45800 1265288    0    0     0   134 4164 8381 13 43 44  0  0

Para los que desconocen que es swapping, es el proceso de copiar memoria a disco y viceversa. Esto ocurre cuando no existe suficiente memoria para satisfacer las necesidades del servidor. También podemos hacer uso del comando free, para mostrar el uso de memoria actual y virtual(swap).

 

[oracle@m9 ~]$ free
             total       used       free     shared    buffers     cached
Mem:       4063964    3979312      84652          0      46296    1262680
-/+ buffers/cache:    2670336    1393628
Swap:     10241336     224660   10016676

Si anexamos la opcion -s podemos desplegarlo cada n segundos. O usar el comando watch.

[oracle@m9 ~]$ free -s 3


[oracle@m9 ~]$ watch -n 3 -d free
Every 3.0s: free                                                       Tue Jul  6 09:58:18 

2010

             total       used       free     shared    buffers     cached
Mem:       4063964    3994596      69368          0      47340    1270432
-/+ buffers/cache:    2676824    1387140
Swap:     10241336     224660   10016676

Otra forma más de ver la memoria actual y swap es la siguiente.

[oracle@m9 ~]$ cat /proc/meminfo
MemTotal:      4063964 kB
MemFree:         85580 kB
Buffers:         45300 kB
Cached:        1246752 kB
SwapCached:       9160 kB
Active:        3012068 kB
Inactive:       571704 kB
SwapTotal:    10241336 kB
SwapFree:     10016660 kB
Dirty:            2268 kB
Writeback:           0 kB
AnonPages:     2287296 kB
Mapped:         767112 kB
Slab:           109260 kB
SReclaimable:    70500 kB
SUnreclaim:      38760 kB
PageTables:      66480 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
WritebackTmp:        0 kB
CommitLimit:  12273316 kB
Committed_AS:  6468308 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    163756 kB
VmallocChunk: 34359574423 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
HugePages_Surp:      0
Hugepagesize:     2048 kB
DirectMap4k:     10176 kB
DirectMap2M:   4184064 kB

Para desplegara cada 5 segundos

watch -n 5 -d cat /proc/meminfo

Si vemos que existe una gran cantidad usasa de memoria swap (un valor bajo en SwapFree), es una indicación de que nuestro servidor necesita más memoria. Revisando el uso de memoria de días anteriores Si quisieramos revisar el consumo de memoria de un día diferente del mes, solo necesitamos hacer uso del comando sar con la opción -f. La información que utiliza sar para generar el reporte se localiza en la ruta /var/log/sa con la convencion saNN, donde NN es el día del mes. Por ejemplo, si quisieramos ver las estadísticas de paging de la memoria del primer día del mes, ejecutamos sar con la opción B(estadísticas de paging) y -f (file).

[oracle@m9 ~]$ sar -B -f /var/log/sa/sa01
Linux 2.6.27.25-78.2.56.fc9.x86_64 (m9)         07/01/2010

12:00:01 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
12:10:01 AM    282.97   1637.97   2605.06      1.03   1127.19    230.42      2.24    220.26     94.67
12:20:01 AM     85.98   2227.14   2435.13      0.05   1127.23    220.21      1.49    211.45     95.38
12:30:01 AM     43.20   1812.33   2220.57      0.02    986.01    167.66      2.39    155.49     91.44
12:40:01 AM     38.19    174.71   2520.40      0.13    974.44     39.01      0.16     33.15     84.65
12:50:01 AM     33.05    126.10   2526.58      0.00    939.17     19.81      0.26     19.49     97.08
01:00:01 AM      0.94    117.49   2297.94      0.00    842.23      7.13      0.00      6.75     94.68
01:10:01 AM   8517.81   7054.91   2831.65      4.23   5114.19   3894.75     10.41   3802.94     97.38
01:20:01 AM    109.02    129.82   2514.74      0.18    920.41      0.00      0.00      0.00      0.00
01:30:01 AM      3.95    116.88   2320.21      0.02    857.86      0.00      0.00      0.00      0.00

Aqui podemos observar un incremento a las 01:10:01 AM de paging en el disco (pgpgin/s, pgpgout/s). También podemos usar la opción -W para ver el swapping

[oracle@m9 ~]$  sar -W -f /var/log/sa/sa01
Linux 2.6.27.25-78.2.56.fc9.x86_64 (m9)         07/01/2010

12:00:01 AM  pswpin/s pswpout/s
12:10:01 AM      2.25      0.17
12:20:01 AM      0.11      0.38
12:30:01 AM      0.06      0.95
12:40:01 AM      0.26      0.11
12:50:01 AM      0.01      0.14
01:00:01 AM      0.00      0.07
01:10:01 AM     15.60     33.04
01:20:01 AM      0.72      0.00
01:30:01 AM      0.13      0.00
01:40:01 AM      1.57      0.00
01:50:01 AM      1.22      0.00
02:00:01 AM      1.87      3.22
02:10:01 AM     12.91      0.06

Existen varias opciones para mostrar la memoria con sar, otra de ellas es con -r que genera un reporte con estadisticas del uso de memoria y swap.

[oracle@m9 ~]$ sar -r
Linux 2.6.27.25-78.2.56.fc9.x86_64 (m9)         07/06/2010

12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
12:10:01 AM     34860   4029104     99.14     32620   1324864  10026080    215256      2.10     10328
12:20:01 AM     40468   4023496     99.00     34092   1324428  10026460    214876      2.10     10292
12:30:01 AM     53092   4010872     98.69     37300   1301612  10026096    215240      2.10     10520
12:40:01 AM     57340   4006624     98.59     40412   1298040  10026004    215332      2.10     10580
12:50:01 AM     53336   4010628     98.69     42880   1299500  10025988    215348      2.10     10564
01:00:01 AM     84828   3979136     97.91     43588   1263016  10026028    215308      2.10     10224
01:10:01 AM    237544   3826420     94.15     13268   1156804  10017812    223524      2.18     10268
You are not authorised to post comments.

Comments powered by CComment

DBASupport - Foro

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...

Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • 4 years ago.
  • 4 years ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Error 16058 attaching RFS server to standby instance at host
Buenos días estoy teniendo este problema al tratar de iniciar la replicación con dataguard, no creo que sea porblema de red porque funcionaba antes,...

V$ARCHIVE_GAP ORA-01220
Buenos días, estoy tratando de ver los gabs que existen en mi base de datos, pero al ejecutar el query me manda el siguiente error. Alguien sabe...
problemas para iniciar el agente sql
  • Topic started by acgch
  • in General
  • 14 years ago.
  • 14 years ago.
  • 11 replies
Recientemente para asegurar el sql server 2005, cree una cuenta sql con derechos de sysadmin y borre el grupo BUILTIN\Administradores para evitar...

Problemas para levantar mirror
  • Topic started by acgch
  • in General
  • 14 years ago.
  • 14 years ago.
  • 16 replies
Hola amigos, tengan un buen día, les comento que estoy configurando mirror siguiendo los pasos a través del wizard del managment studio y también...

Puerto de Enterprise Manager
  • Topic started by
  • in General
  • 13 years ago.
  • 13 years ago.
  • 12 replies
Hola, estoy tratando de acceder a mi enterprise manager de un oracle 10G, donde puedo ver en que puerto esta levantando para entrar desde mi...

Problema EM
  • Topic started by borjious
  • in General
  • 13 years ago.
  • 13 years ago.
  • 13 replies
Hola, estoy teniendo un problema en EM desde hace varios días, y es que tengo una instalacion de 2 BBDD en RAC y puedo acceder al EM de una BBDD,...

Problemas con Alias
  • Topic started by acgch
  • in General
  • 14 years ago.
  • 14 years ago.
  • 14 replies
Hola amigos, otra vez con un nuevo problema, tengo un servidor de producción con sql server 2005 y windows 2003 server con nombre pc1, compramos un...
Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...

Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • 4 years ago.
  • 4 years ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Error 16058 attaching RFS server to standby instance at host
Buenos días estoy teniendo este problema al tratar de iniciar la replicación con dataguard, no creo que sea porblema de red porque funcionaba antes,...

V$ARCHIVE_GAP ORA-01220
Buenos días, estoy tratando de ver los gabs que existen en mi base de datos, pero al ejecutar el query me manda el siguiente error. Alguien sabe...
Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...

Error 16058 attaching RFS server to standby instance at host
Buenos días estoy teniendo este problema al tratar de iniciar la replicación con dataguard, no creo que sea porblema de red porque funcionaba antes,...

V$ARCHIVE_GAP ORA-01220
Buenos días, estoy tratando de ver los gabs que existen en mi base de datos, pero al ejecutar el query me manda el siguiente error. Alguien sabe...