[SOLUCIONADO]Archivos tmpshmem

Hola a Todos:

Estamos en pleno período de exámenes y me reportaron que el SIU estaba funcionando extremadamente lento. Al revisar el servidor informix, me encontré con varios archivos “tmpshmem” y el log tira algunas alarmas… adjunto el log de hoy y el onconfig para ver si me pueden dar una mano… gracias


ONCONFIG.txt (11 KB)

log_05_12_13.txt (25.6 KB)

Hola Carlos

Ese error tiene que ver con el manejo de memoria interno que hace Informix cuando se ejecutan varios stored procedures. Yo te sugeriria que le asignaras mas memoria a Informix, pero antes me gustaria saber cuanta memoria RAM tiene el servidor fisico donde esta instalado el informix.

Aparte de eso, podrias ejecutar
onstat -a > onstat_a.txt
onstat -g all > onstat_g_all.txt

Y mandarme por aca los archivos onstat_a.txt onstat_g_all.txt

Los archivos que genera, son vuelcos de la memoria de Informix, que pueden ser requeridos por el personal de soporte de IBM en caso que tengas el servicio de soporte.

El mensaje de error asociado a lo que pasa es el siguiente:
-9791 User-defined routine execution failed.

This error occurs under the following circumstances:

  1. A language problem occurred or an internal server error exists. In this case, the following log message is entered in the log:

ERROR: Routine execution failed – procname = routine_name procid = process_ID_number

  1. The executing routine has caused one of the following exceptions:

mem – memory fault

ill – illegal instruction

fpt – floating point or divide by zero

sys – system call problem

“xxx” – SAPI layer exception explanation

The following error message appears in the log:

ERROR: Routine execution trap – procname = procedure_name procid = process_ID_number reason: error_string

Gracias Ignacio!

El equipo tiene 2Gb. RAM con un Windows 2003. Te adjunto las salidas que me pedis…


onstat_a.txt (846 KB)

onstat_g_all.txt (740 KB)

Hola Carlos

2Gb me suena a poca memoria para la cantidad de usuarios que tenes, una cosa que no esta buena es que el informix tiene alocados 21 segmentos de shared memory virtual de 8 mb, la recomendacion es siempre tener pocos segmentos y mas grandes.

1- Subi el parametro del onconfig SHMVIRTSIZE (este cambio no va a consumir mas de lo que estas consumiendo ahora, es solo que reserva mas memoria de entrada)
de
SHMVIRTSIZE 16384 # initial virtual shared memory segment size
llevalo a
SHMVIRTSIZE 196608 # initial virtual shared memory segment size

2- Tambien se puede subir el SHMADD de 8192 a 16384 (son Kb)

Adicionalmente habria que subir el BUFFERS, lo cual incrementa el consumo de memoria. te paso algunas recomendaciones:

3- Fijate cuanta memoria libre tenes en el servidor con el task manager de windows (hoy informix, consume 200Mb solo en shared memory, eso sin contar los procesos ONINIT)

4- Subi el parametro BUFFERS del onconfig
Lo ideal es subirlo a 15000 o 20000, pero eso depende de la memoria libre que tengas, para tener una idea cada 1000 unidades, consume 4 Mb de RAM

Tene en cuenta que para que estos cambios se activen hay que bajar y subir Informix, yo te sugiero cambiar de a uno por vez, luego bajar y subir el Informix y verificando que todo este bien.

Los archivos tmpshmem, los podes borrar (por las dudas guarda uno), igual esta atento a ver si genera mas de estos. Los que genero ahora no son por causas muy graves, pero a veces los genera por problemas de corrupcion en disco, lo cual es mas complicado, no es el caso.

Por otro lado, tambien estaria bueno correr un update statistics de los procedures, en especial de los que dieron error de memoria , sus nombres aparecen en el log

saludos
Ignacio

Muchas Gracias Ignacio!! voy a seguir tus indicaciones y les cuento como me va!

Ignacio: Cambié los parámetros del onconfig como me indicaste y ahora funciona mucho mejor (dicho por los propios usuarios), aunque ya finalizaron las inscripciones y no tengo forma de testearlo hasta un nuevo período crítico.

Carlos:

Adicionalmente a lo que te comenta Ignacio, le estás corriendo los procesos de UPDATE SATISTICS recomendados? Muchas veces eso mejora sustancialmente la performance.

Que versión del Guaraní tienen?

Otra cosa que veo es que el Informix está configurado para 1 solo procesador. Es una máquina vieja? No tiene varios procesadores que puedas aprovechar?

Otra cosa: no pueden agregarle memoria? También es bueno cada tanto hacer un export y un import de la base.

Y otra más: en este foro yo pasé el link e incluso el archivo de un artículo que me fue muy util sobre como optimizar el Informix. Si no lo encontrás, haceme acordar cuando nos veamos y te lo paso.

Saludos