Está en la página 1de 19

NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN

BLUETIC Asesores de Negocio S.L. Blog de Oracle APEX

Search eld: type and press enter


SOLUCIÓN AL DESBORDAMIENTO DE MEMORIA EN APEX
SOBRE GLASSFISH

 24 enero, 2014  Trucos & Consejos  gustavo

A veces, cuando creamos páginas en APEX con mucho contenido editable, al guardar los
cambios, la memoria asignada a Glass sh no es su ciente para almacenar
temporalmente los datos de esa página y directamente nos deja de funcionar la
aplicación dándonos un error en el servidor. Ten enseñamos a solucionar este
problema.

Si creamos aplicaciones APEX para clientes nuestros es altamente recomendable que


 APEX esté corriendo bajo un servidor de aplicaciones como puede ser Glass sh. Esto
tiene muchas ventajas como el rendimiento o la velocidad de carga pero como
desventaja puede darnos algunos problemas muy fáciles de solventar si conocemos la
herramienta, de lo contrario, nos puede traer grandes quebraderos de cabeza como el
NOVEDADES TRUCOS & CONSEJOS UTILIDADES
siguiente error:
CONTACTA FORMACIÓN

Este error puede aparecer por varias razones, una de ellas es que al intentar guardar
una cantidad muy grande de datos la memoria asignada por defecto para Glass sh no
sea su ciente para almacenar estos datos y nos de un desbordamiento de memoria.
Esto lo podemos ver en el chero log de Glass sh que se encuentra dentro de la
Search eld: type and press enter
carpeta de glass sh>glass sh>domains>nombre-dominio>logs>server.log.

Si el error ha sido ocasionado por un desbordamiento de memoria podremos ver en


este log el siguiente mensaje:

‘java.lang.OutOfMemoryError: Java heap space’ es el error que nos indica que el sistema
a sobre pasado el máximo de memoria disponible.

La solución es muy sencilla. Por defecto, durante la instalación de Glass sh, se le


asigna un máximo de memoria de 512MB que, por lo general, suele ser su ciente, pero a
veces no. Para aumentar este valor simplemente tenemos que:
1. Entrar en la consola de administración de Glass sh(por defecto
NOVEDADES TRUCOS & CONSEJOS UTILIDADES
http://localhost:4848)
CONTACTA FORMACIÓN

2. Una vez dentro nos vamos a Con guration>JVM Settings>JVM Options
3. Modi camos el valor ‘-XX:MaxPermSize=192m‘ por ‘-XX:MaxPermSize=256m‘
4. Modi camos el valor ‘-Xmx512m‘ por ‘-Xmx1024m‘
5. Reiniciamos Glass sh.

Con esto ya tendríamos solucionado el problema del desbordamiento de memoria.

NOTA: Asegúrate de no asignar más memoria de la que dispone tu máquina, 1024 suele
ser más que su ciente.

Search eld: type and press enter


 #apex #con guracion #desbordamiento #glass sh #java
#java.lang.outofmemoryerror #memoria

20 comments on “Solución al desbordamiento de memoria en APEX


sobre Glass sh” Add yours →

Isaac Naranjo dice: 3 marzo, 2014 a las 12:28

Hola, buenas tardes,

Yo tengo en producción Apex 4.2.3 mediante Glass sh y Apex


Listener, todo funciona OK, pero cada cierto tiempo se descon gura
el listener y aparece el error 503 – Service Available. He realizado
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN
los cambios que explicáis en este artículo, he ganado en velocidad, 
pero el dichoso error sigue apareciendo. La solución es eliminar
apex.war en glass sh y volver a desplegarlo desde 0.

Busco y busco por internet, pero no encuentro la solución al


problema. Sabéis porque puede pasar esto?. Llevo varios meses y
no doy con el problema y me tiene un poco desesperado.

Desde ya muchas gracias y un Saludo,


Isaac Naranjo,

1.  Responder
Search eld: type and press enter

admin dice: 3 marzo, 2014 a las 12:51

Hola Isaac
Sería interesante que revisases el log que te da el Glass sh para
saber porque te está dando el error 503, este error es muy
genérico, no siempre es por desbordamiento de memoria.
Cuando revises el log, nos cuentas a ver:
carpeta de glass sh>glass sh>domains>nombre-
dominio>logs>server.log
Un saludo

A.  Responder

Isaac Naranjo dice: 3 marzo, 2014 a las 12:35


El error que aparece es 503 – service unavailable no 503 – Service
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA
Available.
FORMACIÓN

2.  Responder

admin dice: 3 marzo, 2014 a las 12:58

Hola Isaac
Lo que te puede estar pasando es que ha caducado la password
de APEX_PUBLIC_USER.

Search eld:
Este usuario es eltype
que usa and press
el Listener enter
para conectarse a la Base
de Datos.
Entra en tu base de datos comos sys o system y revisa este
usuario a ver si le ha caducado o está bloqueado.
Si recuerdas las password de APEX_PUBLIC_USER, le pones la
misma y debería funcionar.
Si no recuerdas la password de APEX_PUBLIC_USER, se la
modi casy debes de rehacer el war para subirlo al Glass sh: java
-jar apex.war setup

Esperamos tus noticias.

A.  Responder

Isaac Naranjo dice: 3 marzo, 2014 a las 16:30

Hola, Muchas gracias por responder. Ya había revisado el log de


Glass sh pero para ser sincero no sacaba nada en claro, esto es un
extracto del log de Glass sh cuando se produjo el último fallo:
[#|2014-02-24T09:42:32.097+0100|WARNING|oracle-
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN
glass sh3.1.2|javax.enterprise.system.container.web.com.sun.enterpr 
ise.web|_ThreadID=72;_ThreadName=Thread-
2;|StandardWrapperValve[HttpEndPoint]: PWC1406: Servlet.service()
for servlet HttpEndPoint threw exception
java.lang.IllegalStateException: No default con guration found
at
oracle.dbtools.common.con g.GlobalCon guration.conf(GlobalCon
guration.java:72)
at
oracle.dbtools.common.con g.GlobalCon guration.get(GlobalCon g
uration.java:42)

Search
at eld: type and press enter
oracle.dbtools.common.diagnostics.Diagnostics.outputStatus(Diagn
ostics.java:125)
at
oracle.dbtools.common.diagnostics.Diagnostics.diagnosticContext(D
iagnostics.java:70)
at
oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.j
ava:95)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at
org.apache.catalina.core.StandardWrapper.service(StandardWrapper
.java:1550)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWra
pperValve.java:281)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardCont
extValve.java:175)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeli
ne.java:655)
NOVEDADES TRUCOS & CONSEJOS UTILIDADES
at
CONTACTA FORMACIÓN

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j
ava:595)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostVal
ve.java:161)
at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdap
ter.java:331)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.
Search
java:231) eld: type and press enter
at
com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCalla
ble.call(ContainerMapper.java:317)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(Contai
nerMapper.java:195)
at
com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.jav
a:860)
at
com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757
)
at
com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilt
er.java:229)
at
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultP
rotocolChain.java:137)
at
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.j 
ava:104)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.j
ava:90)
at
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.ja
va:79)
at
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainCont
extTask.java:54)
Search
at eld: type and press enter
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTa
sk.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThr
eadPool.java:532)
at
com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadP
ool.java:513)
at java.lang.Thread.run(Thread.java:722)
|#]

Saludos,

3.  Responder

Isaac Naranjo dice: 3 marzo, 2014 a las 16:41


Hola de nuevo,
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN

He revisado el usuario apex_public_user y efectivamente tiene
EXPIRE_DATE a 31/03/2014, me imagino que este es el fallo.

Que opináis?

Gracias,

4.  Responder

Search eld: type and press 7enter


admin dice: marzo, 2014 a las 9:02

Efectivamente hay que, volver a darle una password, y rehacer el


apex.war e i.war y subirlo par desplegarlo en Glass sh.
Según la nota que indicamos en el blog de como con gurar
Glass sh y listener.
Por lo tanto hay que volver a con gurar el listener, ya que la
password de APEX_PUBLIC_USER la vas a modi car.
Próximamente colgaremos una nota en el Blog, de como
solucionar este problema

A.  Responder

Isaac Naranjo dice: 3 marzo, 2014 a las 16:47

Un apunte,

Los usuario SYS y SYSTEM también tienen EXPIRE_DATE a 31/03/2014


y sin embargo nunca he tenido problemas con ellos.
Saludos,
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN

5.  Responder

admin dice: 7 marzo, 2014 a las 8:58

Hola Isaac

Hay un parámetro de base de datos : PASSWORD_LIFE_TIME que


por defecto es 180 días
Debes ampliarlo o ponerlo ilimitado:
Search eld: type and press enter
alter pro le default limit PASSWORD_LIFE_TIME unlimited;

A.  Responder

Isaac Naranjo dice: 4 marzo, 2014 a las 12:55

Hola, quería añadir otro apunte al tema tratado,

He probado a forzar la caducidad de la contraseña del usuario


apex_public_user y al acceder a la URL me tira el error:

500 – Internal Server Error

Y no el error 503 – Service Available.

Por lo que parece que la clave del usuario apex_public_user no es


la causa del problema.

Qué opináis?,

Gracias y un saludo,
6.  Responder
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN

Isaac Naranjo dice: 4 marzo, 2014 a las 14:04

Hola de nuevo,

Perdón por insistir de nuevo, pero el tema me resulta interesante y


he realizado nuevas pruebas

He bloqueado el usuario apex_public_user y mediante sqlplus no


puedo acceder (es lógico), pero sin embargo la URL
Search eld: type and press enter
http://90.0.0.218:8080/pls/f?p=455 (apex listener + glass sh en mi
Server) sigue funcionando ok.

Hay alguna forma de saber cual es el usuario que usa el listener?

Muchas gracias

Esto quiere decier que el listener no está usando el usuario


apex_public_user

7.  Responder

Isaac Naranjo dice: 4 marzo, 2014 a las 19:09

Después de probar varias cosas en ratos libres, parece que sí, la


historia estaba en el usuario apex_public_user.

De todas formas, seguiremos investigando.


Muchas gracias por la ayuda,
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA
Un saludo,
FORMACIÓN

A.  Responder

admin dice: 7 marzo, 2014 a las 9:11

Hola Isaac

Tenemos que hacer varios pasos:

Search1.operar
Habilitar sys, system y apex_public_user para que puedas
eld: type and press enter
con ellos.
conn / as sysdba
alter user sys identi ed “by password”

*Luego te conectas como sys :


alter user system identi ed “by password”
alter user apex_public_user identi ed “by password”

2. Modi ca la variable PASSWORD_LIFE_TIME


alter pro le default limit PASSWORD_LIFE_TIME unlimited;

3. Recon gurar el listener, según la nota que hay en nuestro


blog…
java -jar apex.war
………………
4. Desplegar apex.war e i.war en el Glass sh

Espero que te hayamos ayudado.


Si tienes alguna duda nos lo comentas y te ayudaremos.
En breve subiremos una nota, explicando la operativa

Un saludo
I. CONTACTA
Responder
NOVEDADES TRUCOS & CONSEJOS UTILIDADES FORMACIÓN

admin dice: 7 marzo, 2014 a las 8:56

Normalmente lo has con gurado tu cuando instalaste el listener


y por defecto es APEX_PUBLIC_USER

B.  Responder

Search eld: type and press enter


Marino Garcia dice: 6 marzo, 2014 a las 22:42

Me alegro que se te haya solucionado Isaac.


Un saludo

8.  Responder

Isaac Naranjo dice: 7 marzo, 2014 a las 14:25

Todavía no es 100%, pero parece q este era el problema.


Muchas gracias por la ayuda.
Un saludo,

9.  Responder

Isaac Naranjo dice: 17 marzo, 2014 a las 9:50


NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA
Hola, buenos días, FORMACIÓN

Diez días después, se vuelve a generar el mismo error, falla el
listener desplegado en Glass sh. La contraseña del usuario
apex_public_user esta como unlimited. El Server dónde tengo
montado Apex es un Sistema CentOS y es una VM. Desde el día 4
hasta hoy día 17 ha funcionado todo perfectamente, al llegar hoy
lunes y acceder a la URL del listener… fallo.
Alguna sugerencia?. La verdad el tema es muy extraño.

Un saludo y gracias.

10.  Responder
Search eld: type and press enter

Amaya dice: 25 marzo, 2014 a las 14:51

Hola Isaac, intenta ver el log del listener y del glass sh

11.  Responder

yenifer dice: 29 febrero, 2016 a las 23:33

ERROR 503 SERVICE UNAVAILABLE apex

es un error que se presenta cuando la conexion entre el servidor


web y el framework no es posible, la razon puede ser que la
contraseña del usuario apex que permite la conexion expiro (esta
vencida) por ende el sistema bloquea (lock) al usuario, para esto es
necesario veri car el estado de la cuenta del usuario; por lo general
estas conexiones son realizadas con el usuario “apex_pulic_user”.
select account_status, pro le from dba_users where username =
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA
‘APEX_PUBLIC_USER';
FORMACIÓN

si la cuenta esta bloqueada saldra en el estado lock; para resolver
esto es necesario darle un nuevo limite a la clave del per l default
al cual pertenece el usuario o dejarla inde nida

ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED


PASSWORD_LIFE_TIME UNLIMITED;

para veri car el estado del limite de la clave podemos ejecutar esta
consulta

select resource_name,limit from dba_pro les where pro le =


Search
‘DEFAULT'; eld: type and press enter

como el usuario se bloqueo por haber vencido su contraseña, es


necesario re asignar una nueva y desbloquear la cuenta

ALTER USER APEX_PUBLIC_USER IDENTIFIED BY “pass” ACCOUNT


UNLOCK;

nos conectamos como este usuario para veri car la contraseña y el


estado de la cuenta, si logramos autenticarnos esta todo bien

connect apex_public_user

una vez hecho esto se debe modi car el war del ords con el n de
modi car la clave del usuario apex

java -jar ords.war setup

ejecutamos el war y en localhost lo dejamos tal cual (presionamos


enter)
seleccionamos la opcion de SID, presionando el numero 2
digitamos el sid
luego dejamos el mismo APEX_PUBLIC_USER
y digitamos la nueva contraseña
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA
con rmamos
FORMACIÓN

y presionamos 2 para que esta contraseña sea la misma para los
usuarios APEX_LISTENER y REST

bajamos y subimos los servicios (base de datos listener y apache)

12.  Responder

admin dice: 1 marzo, 2016 a las 8:43

Search eld: type and press enter


Grcaias Yenifer por compartir tus conocimientos en este Blog.

A.  Responder

Deja un comentario
Tu dirección de correo electrónico no será publicada. Los campos necesarios están
marcados *

Nombre * Correo electrónico *

Web

Comentario
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr
title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class=""

Search eld: type and press enter


title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike>
<strong> <pre class="" title="" data-url=""> <span class="" title="" data-
url="">

Publicar comentario

Recibir un email con los siguientes comentarios a esta entrada.

Recibir un email con cada nueva entrada.

 PREVIOUS

Modi cando tu página de login de APEX


NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN

NEXT 

Novedades en Oracle APEX 5.0

Search eld: type and press enter

Sitios de interés Ultimas entradas Todas las entradas

Apex Forum  ¿Cómo sacar un Mensaje de Error o de Elige una entrada...


Éxito en APEX?
Apex World
 Listas de valores en cascada en 3
Blog de David Peake
niveles, para Tabular forms o Reports.
Blog de Dimitri Gielis
 Plataforma gratuita de traducción
Blog de Joel Kallman Oracle APEX

Blog de Roels  Guardar BLOB’s como cheros en el


servidor, sin almacenarlos en Base de
Blog de Vicent Morneau
Datos
Blog Patrick Wolf
 Restablecer la paginación de un report
FOEX en Apex

Jari's APEX Blog


Oracle Apex
NOVEDADES TRUCOS & CONSEJOS UTILIDADES CONTACTA FORMACIÓN

© 2017 Blog Oracle APEX en Español. Powered by WordPress. Theme by WebMan Design. Back to top ↑

También podría gustarte