Sin memoria con Tomcat 6 en RedHat pero no en Debian

Estoy usando liferay 6.0.6 con tomcat 6 y terracota 3.5.4. La instalación de terracota en otro servidor y funciona bien.

Los sistemas Debian y Redhat son máquinas virtuales y utilizan exactamente el mismo hardware virtual. 1 CPU, 4 GB de RAM, ambos SO de 64 bits.

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (rhel-1.48.1.11.3.el6_2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

Si estoy usando un sistema Debian y arranco la aplicación, entonces todo funciona como se esperaba.

Si estoy usando el sistema redhat, aparece un error:

java.lang.OutOfMemoryError: unable to create new native thread
    at java.lang.Thread.start0(Native Method)
    at java.lang.Thread.start(Thread.java:657)
    at java.util.Timer.<init>(Timer.java:176)
    at com.tc.object.locks.ClientLockManagerImpl.<init>(ClientLockManagerImpl.java:39)
    at com.tc.object.StandardDSOClientBuilder.createLockManager(StandardDSOClientBuilder.java:190)
    at com.tc.object.DistributedObjectClient.start(DistributedObjectClient.java:639)
    at com.tc.object.bytecode.ManagerImpl$2.execute(ManagerImpl.java:263)
    at com.tc.lang.StartupHelper.startUp(StartupHelper.java:39)
    at com.tc.object.bytecode.ManagerImpl.startClient(ManagerImpl.java:281)
    at com.tc.object.bytecode.ManagerImpl.init(ManagerImpl.java:202)
    at com.tc.object.bytecode.ManagerImpl.init(ManagerImpl.java:190)
    at com.tc.object.bytecode.hook.impl.DSOContextImpl.createStandaloneContext(DSOContextImpl.java:179)
    at org.terracotta.express.StandaloneL1Boot.call(StandaloneL1Boot.java:190)
    at org.terracotta.express.ClientImpl.<init>(ClientImpl.java:309)
    at org.terracotta.express.ClientFactoryImpl.newClient(ClientFactoryImpl.java:232)
    at org.terracotta.express.ClientFactoryImpl.createClient(ClientFactoryImpl.java:225)
    at org.terracotta.express.ClientFactoryImpl.createClient(ClientFactoryImpl.java:212)
    at org.terracotta.express.ClientFactoryImpl.getOrCreateClient(ClientFactoryImpl.java:190)
    at org.terracotta.express.ClientFactory.getOrCreateClient(ClientFactory.java:28)
    at net.sf.ehcache.terracotta.StandaloneTerracottaClusteredInstanceFactory.<init>(StandaloneTerracottaClusteredInstanceFactory.java:37)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

La parte más extraña de este error es que la memoria no se usa. He configurado el Xmx a 3500 m, pero el uso de la memoria nunca supera los 2,3 gb.

He estado buscando una posible causa y encontré esto: Límite bajo de subprocesos de un solo proceso de Java en Red Hat Linux

Así que cambié mi ulimit -n y ulimit -u a 80000 pero todavía nada cambia.

Luego edité mi /etc/security/limits.conf

*       soft    nproc           81920
*       hard    nproc           81920
*       soft    nofile          81920
*       hard    nofile          81920

También edité /etc/sysctl.conf

fs.file-max = 100000

Luego reinicié.

También agregué -Xms = 2g a mi setenv.sh

Aumenté -Xss a -Xss5000k

Ejecuto echo 200000> / proc / sys / kernel / threads-max

Pero el mismo error sigue apareciendo. Algunas ideas ?

free -m al comienzo del arranque

             total       used       free     shared    buffers     cached
Mem:          3963       1027       2935          0         25        748
-/+ buffers/cache:        253       3709
Swap:         2047         18       2029

libre -m justo antes del choque

             total       used       free     shared    buffers     cached
Mem:          3963       2897       1065          0         31        823
-/+ buffers/cache:       2043       1920
Swap:         2047         18       2029

Actualización: también probé con una máquina con 8 gb de ram y aparece el mismo resultado.

Respuesta 1

Tengo la clase y subclase abstracta: A.java: package myPackage; import java.util.ArrayList; import java.util.List; clase abstracta pública A {resumen protegido int getInt (); protegido ...

¿Puedo saber cómo hago un bucle para poder generar código hash para todas las palabras en el archivo (.txt)? Ya puedo generar un código hash único para el archivo. el bucle dado lee y saca las palabras en ...

Tengo esta cadena: Prueba 123 $ {tag1} lorem ipsum $ {tag2} $ {tag3; etiqueta4} $ {etiqueta5; tag6} dixit lorem $ {tag7} dixit lorem $ {tag8}. Me gustaría tener una expresión regular para seleccionar solo el texto entre $ {etiqueta; etiqueta}. ...

¿Cómo funciona hibernate en términos de lecturas y escrituras? ¿Cómo funciona hibernate si la aplicación escribe más en DB? En este caso, entiendo que la memoria caché debe actualizarse para cada escritura, ...