Tema anterior: Dispositivos del servidor de aplicaciones

Tema siguiente: JBOSS, JBOSS64: servidor de aplicaciones JBoss

TOMCAT, TOMCAT64: servidores de aplicaciones

Última versión: 2.0.2-1

Servidores Tomcat

Vista rápida

Catálogo

Sistema

Categoría

Servidores de aplicaciones

Volúmenes de usuario

yes

Memoria mín.

160 MB

SO

Linux

Restricciones

no

Preguntas o comentarios

Pregunte en el foro

Descripción general del funcionamiento

TOMCAT es un dispositivo de servidor Web basado en una máquina Java Sun y Apache Tomcat, un servlet de Java y un contenedor de páginas de JavaServer desarrollado bajo licencia de Apache. La documentación principal de Tomcat se encuentra en tomcat.apache.org. Tomcat ofrece compatibilidad conforme a los estándares para servlets y JSP. Tomcat puede funcionar como servidor Web independiente o como servidor de aplicaciones.

TOMCAT sirve contenido Web estático, implementa automáticamente aplicaciones Web y ejecuta servlets y páginas de JavaServer a partir de un volumen de contenido configurable por el usuario. Las rutas a los documentos son configurables, para que el mismo volumen se pueda compartir entre varios servidores Web y otros dispositivos que sirven contenido diferente.

TOMCAT sirve protocolo HTTP/1.1 y HTTP/1.0 a clientes Web y AJP 1.3 para las solicitudes que vienen de servidores front-end (por ejemplo, Apache con mod_proxy_ajp).

Al igual que los servidores WEBx, TOMCAT tiene tres terminales de salida genéricos para acceder a los servicios externos de los scripts del volumen de contenido. El terminal db se usa para acceder a diversas bases de datos; el terminal fs se usa para acceder a almacenamiento de archivos compartidos (mediante NFS); y el terminal aux se crea para enviar mensajes de correo electrónico a un servidor SMTP.

El terminal de registro debe utilizarse para conectar TOMCAT a un sistema de archivos compartido, donde TOMCAT puede almacenar archivos de registro.

La configuración del servidor se define mediante diversas propiedades. Estas propiedades están diseñadas para cubrir la mayoría de las variantes de uso de una forma fácil de configurar y, en la mayor parte de los casos, solamente hay que configurar unas cuantas con valores no predeterminados.

Nombre

Última versión

SO

Versión de máquina de Java

Versión de Apache Tomcat

TOMCAT

2.0.2-1

CentOS 5.5

JDK 1.6.0.22

6.0.29

TOMCAT64

2.0.2-1

CentOS 5.5 (64 bits)

JDK 1.6.0.22

6.0.29

Límite

Recursos para TOMCAT

Recurso

Mínimo

Máximo

Predeterminado

CPU

0,1

16

0,3

Memoria

160 MB

4 G

512 MB

Ancho de banda

1 Mbps

2 Gbps

250 Mbps

Recursos para TOMCAT64

Recurso

Mínimo

Máximo

Predeterminado

CPU

0,1

16

0,3

Memoria

160 MB

64 G

512 MB

Ancho de banda

1 Mbps

2 Gbps

250 Mbps

Tenga en cuenta lo siguiente:

Recurso

Mínimo

Máximo

Predeterminado

CPU

0,1

16

0,3

Memoria

160 MB

64 G

512 MB

Ancho de banda

1 Mbps

2 Gbps

250 Mbps

Tenga en cuenta lo siguiente:

Recurso

Mínimo

Máximo

Predeterminado

CPU

0,1

16

0,3

Memoria

160 MB

64 G

512 MB

Ancho de banda

1 Mbps

2 Gbps

250 Mbps

Tenga en cuenta lo siguiente:

Importante: TOMCAT tiene restricciones heredadas del equipo de java de 32 bits. Este equipo de java no puede funcionar con más de 2,6 Gb de memoria aproximadamente y la adjudicación de más 2,8 Gb de memoria para TOMCAT no es eficaz.

Requisitos de memoria para almacenamiento de sesiones de aplicaciones Java

Además de la memoria para las aplicaciones de Java, debe haber cierta cantidad de memoria disponible para almacenar las sesiones de las aplicaciones. Cada sesión vacía (sin datos adicionales almacenados) utiliza cerca de 2 kB de memoria. Esa memoria se utiliza mientras dura la sesión (la vida de sesión predeterminada es de 30 min). Se puede configurar la duración de la sesión modificando o agregando una sección adicional al archivo de configuración web.xml de una aplicación. Por ejemplo, la inclusión de este código a continuación configura la duración de la sesión en 1 minuto:

  <session-config>
    <session-timeout>1</session-timeout>
  </session-config>

Si se esperan 10.000 visitantes únicos en 30 min, se necesitarán 20 Mb adicionales de memoria libre. En general, la cantidad necesaria de memoria es igual al número máximo de sesiones activas simultáneas multiplicado por el tamaño medio de una sesión.

Importante: Si no hay suficiente memoria disponible, es posible que TOMCAT no funcione correctamente. Esto depende de las aplicaciones de usuario que se estén ejecutando en TOMCAT, no es una limitación del dispositivo en sí.

Terminales

Nombre

Dirección

Protocolo

Descripción

in

Entrante

HTTP

Sirve solicitudes HTTP procedentes de clientes Web. Es compatible con los protocolos HTTP/1.1, HTTP/1.0 y AJP.

db

Saliente

Cualquiera

Permite acceder a un servidor de base de datos. El uso se define mediante los scripts que residan en el volumen de contenido (si existe alguno). Este terminal se puede dejar desconectado si no se usa.

fs

Saliente

NFS

Acceso a un sistema de archivos de red para almacenamiento compartido de archivos que proporciona acceso de lectura/escritura al archivo a través de NFS. El uso se define mediante los scripts que residan en el volumen de contenido (si existe alguno). El software del volumen de contenido "ve" el sistema de archivos remoto montado como /mnt/fs en el espacio del sistema de archivos del dispositivo. Este terminal se puede dejar desconectado si no se usa. El servidor conectado debe tener un recurso compartido de lectura/escritura denominado /mnt/data exportado a través de NFS.

log

Saliente

CIFS

Acceso a un sistema de archivos de red basado en CIFS para almacenar registros de error y de acceso. Este terminal se puede dejar desconectado si no se usa. El servidor conectado debe permitir inicios de sesión anónimos y tener un recurso compartido de lectura/escritura exportado denominado share.

aux

Saliente

Cualquiera

Acceso a un servidor SMTP para el envío de correo electrónico saliente.
Este terminal se puede dejar desconectado si no se usa.

net

Saliente

Cualquiera

Salida de la puerta de enlace para acceso de subred.
Este terminal se puede dejar desconectado si no se usa.

mon

Saliente

CCE

Envía estadísticas de rendimiento y de uso de recursos al dispositivo MON.
Este terminal se puede dejar desconectado si no se usa.

La interfaz predeterminada está activada. Se utiliza para diagnósticos y solución de problemas (mediante SSH). Las versiones futuras de este dispositivo pueden desactivar el acceso de SSH.

Volúmenes de usuario

Volumen

Descripción

content

Volumen para el almacenamiento de aplicaciones de tomcat, datos de aplicaciones y archivos de trabajo y temporales. Este volumen sólo se utiliza si la propiedad content_on_fs se establece en "off".

Propiedades

Nombre de la propiedad

Tipo

Descripción

content_on_fs

Cadena

Especifica si el contenido se refiere al sistema de archivos del terminal fs o al volumen de contenido. Valor predeterminado: off (en el volumen de contenido)

hostname

Cadena

Nombre de host del sitio Web. Valor predeterminado: localhost

tomcat_port

Entero

Puerto donde Tomcat está a la escucha de solicitudes HTTP entrantes. Valor predeterminado: 8080

session_timeout

Entero

Tiempo de espera para la sesión de usuario, en minutos, durante la cual TOMCAT guardará todos los datos asociados con la sesión de usuario en memoria. Valor predeterminado: 30

max_connections

Entero

Número máximo de conexiones simultáneas permitidas. Cuando se alcanza este número, se siguen aceptando nuevas conexiones, pero se retrasa su procesamiento hasta que se cierre otra conexión. Valor predeterminado: 100

heap_size

Entero

Memoria asignada al montón Java (la opción Java -Xmx), en megabytes. Si es 0, este valor se calcula automáticamente. Valor predeterminado: 0

perm_size

Entero

Memoria asignada para objetos permanentes de Java (la opción Java -XX:PermSize), en megabytes. Si es 0, este valor se calcula automáticamente. Valor predeterminado: 0

app_base

Cadena

Directorio raíz para los documentos y los archivos de trabajo y temporales. En esta carpeta se creará una estructura típica de un directorio de Tomcat ${catalina.base}: "shared" para bibliotecas comunes a todas las aplicaciones java; "temp" y "work" para archivos temporales y de trabajo; y el subdirectorio definido en la propiedad work_dir, análogo a ${catalina.base}/webapps. Valor predeterminado: vacío

work_dir

Cadena

Directorio donde están los documentos que se tienen que servir. También se utiliza para implementación automática. Dispone de más información en el sitio Web de Tomcat, en la sección sobre implementación de aplicación automática. Valor predeterminado: webapps

timezone

Cadena

Especifica la zona horaria utilizada en el dispositivo. Si esta propiedad está vacía, la zona horaria no se modifica y se deja tal cual. Aquí tiene disponible una lista de zonas horarias admitidas. Valor predeterminado: vacío

Registro de propiedades

Nombre de la propiedad

Tipo

Descripción

logs_enabled

Cadena

Activa o desactiva el registro por completo. Valor predeterminado: no

logs_base_dir

Cadena

Directorio donde se almacenan los archivos de registro. Valor predeterminado: vacío. Se colocarán los registros en el directorio raíz del volumen NAS montado.

error_log_filename

Cadena

Prefijo de nombre de archivo para el registro de errores. Valor predeterminado: catalina

log_level

Cadena

Nivel de registro. Los valores son, aumentando nivel de verbosidad, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL. Dispone de una descripción más detallada de los niveles de registro en la documentación de Tomcat. Valor predeterminado: INFO

enable_access_log

Cadena

Activa o deshabilita el registro de acceso. Valor predeterminado: no

access_log_filename

Cadena

Prefijo de nombre de archivo para el registro de acceso. Valor predeterminado: access.log

Contadores personalizados

El dispositivo TOMCAT informa sobre los siguientes contadores personalizados a través del terminal "mon". Estos contadores pertenecen al grupo de contadores de TOMCAT (TOMCAT64 en el caso de TOMCAT64):

Nombre del contador

Descripción

Classes loaded

Número de clases cargadas.

Classes loaded bytes

Número de Kbytes cargados.

Classes unloaded

Número de clases descargadas.

Classes unloaded bytes

Número de Kbytes descargados.

Classes load/unload execution time

Tiempo consumido en las operaciones de carga y descarga de clases.

Compiler compiled

Número de tareas de compilación realizadas.

Compiler failed

Número de tareas de compilación fallidas.

Compiler invalid

Número de tareas de compilación invalidadas.

Compiler execution time

Tiempo consumido en tareas de compilación.

Heap s0 space capacity

Capacidad de espacio de superviviente actual 0.

Heap s1 space capacity

Capacidad de espacio de superviviente actual 1.

Heap s0 space utilization

Uso de espacio de superviviente 0.

Heap s1 space utilization

Uso de espacio de superviviente 1.

Heap eden space capacity

Capacidad de espacio de eden actual.

Heap eden space utilization

Uso de espacio de eden.

Heap old space capacity

Capacidad de espacio de montón actual.

Heap old space utilization

Uso de espacio antiguo.

Heap permanent space capacity

Capacidad de espacio permanente actual.

Heap permanent space utilization

Uso de espacio permanente.

Heap young generation GC events

Número de eventos GC de generación reciente (GC - Recolección de elementos no utilizados).

Heap young generation GC time

Tiempo de recolección de elementos no utilizados de generación reciente.

Heap number of GC events

Número de eventos GC completos.

Heap full GC time

Tiempo de recolección de elementos no utilizados completa.

Heap total GC time

Tiempo de recolección de elementos no utilizados total.

Pool current new generation

Nueva capacidad de generación actual.

Pool min new generation

Capacidad de generación nueva mínima.

Pool max new generation

Capacidad de generación nueva máxima.

Pool current old generation

Capacidad de generación antigua actual.

Pool min old generation

Capacidad de generación antigua mínima.

Pool max old generation

Capacidad de generación antigua máxima.

Pool current permanent generation

Capacidad de generación permanente actual.

Pool min permanent generation

Capacidad de generación permanente mínima.

Pool max permanent generation

Capacidad de generación permanente máxima.

New generation tenuring threshold

Umbral de antigüedad.

New generation max tenuring threshold

Umbral de antigüedad máximo.

Desired survivor size

Tamaño de superviviente deseado.

Compiler tasks

Número de tareas de compilación realizadas.

Posibles errores de inicio

En caso de error al iniciar el dispositivo, pueden aparecer los errores siguientes en el registro del sistema:

Mensaje de error

Descripción

ERROR: Logs are enabled, but log terminal is not connected.

El terminal de registro no está conectado, pero logs_enabled o enable_access_log está establecido en "yes".

ERROR: Property content_on_fs is 'off' but the local content volume is missing.

content_on_fs está establecido en "off", lo cual especifica que el volumen de datos se deberá montar localmente, pero TOMCAT no puede montar el volumen de contenido. La causa más probable es que el volumen de contenido no se haya formateado, o no se haya definido en las propiedades de TOMCAT.

ERROR: Failed to mount nfs share.

TOMCAT no puede montar el recurso compartido nfs. La causa probable es que fs no esté conectado o que TOMCAT se haya iniciado antes que NAS (o cualquier dispositivo que se conecte al terminal fs).

Mensajes del cuadro de mandos

Mensaje

Descripción

Data storage has less than 5% of free disk space

El volumen de datos al cual se accede a través del terminal fs tiene menos del 5 % de espacio libre en disco. Se aconseja aumentar el tamaño del volumen.

Data storage has less than 1% of free disk space

El volumen de datos al cual se accede a través del terminal fs tiene menos del 1 % de espacio libre en disco. Se requiere atención inmediata; puede producirse una pérdida de datos.

Content volume has less than 5% of free disk space

El volumen de contenido en el dispositivo tiene menos del 5 % de espacio libre en disco. Se aconseja aumentar el tamaño del volumen.

Content volume has less than 1% of free disk space

El volumen de contenido en el dispositivo tiene menos del 1 % de espacio libre en disco. Se requiere atención inmediata; puede producirse una pérdida de datos.

Rendimiento

El rendimiento de TOMCAT puede verse afectado si se activa el registro (ya sea habilitar el registro de errores mediante logs_enabled = yes o acceder a los registros mediante enable_access_log = yes). La tabla siguiente contiene los resultados de un punto de referencia (benchmark). Dichos resultados están expresados en solicitudes por segundo (sps) y se han obtenido con los registros desactivados mediante la utilidad Apache Benchmark que se incluye con las versiones 2.0 y 2.2 del servidor Web de Apache. Encontrará más información para ab en el sitio Web de Apache. Se utilizaron los siguientes valores de configuración para el benchmarking: "bw=500M mem=2G cpu=2".

Simultaneidad

sps

1 cliente simultáneamente

2.800-3.200 rps

10 clientes simultáneamente

7.500-7.900 rps

100 clientes simultáneamente

7.700-8.100 sps

Uso típico

Sitio Web habilitado para Java simple

TOMCAT servirá aplicaciones desde el volumen de contenido.

Dispositivos en uso:

Nombre de la propiedad

Valor

Notas

hostname

www.mysite.org

Nombre de host del sitio.

app_base

MyApp

 

content_on_fs

off

TOMCAT utiliza el contenido del volumen de usuario para todo el contenido.

timezone

EST

Zona horaria del este.

tomcat_port

80

Puerto estándar para el protocolo HTTP.

Las solicitudes de cliente llegan a la puerta de enlace IN. La puerta de enlace envía las solicitudes al servidor TOMCAT, el cual proporciona la solicitud.

Aplicación de dos niveles con base de datos, registro y control

Dispositivos en uso:

Ejemplo de configuración de las propiedades:

Nombre de la propiedad

Valor

Notas

hostname

www.mysite.org

Nombre de host del sitio.

app_base

MyApp

 

content_on_fs

on

TOMCAT utiliza almacenamiento remoto a través del terminal fs para todo el contenido.

timezone

EST

Zona horaria del este.

tomcat_port

80

Puerto estándar para el protocolo HTTP.

max_connections

200

200 usuarios simultáneos como máximo.

logs_enabled

yes

Permite registros de errores.

logs_base_dir

MyApp_Log_Dir

 

log_level

INFO

 

error_log_filename

error_log

Nombre del registro de errores.

enable_access_log

yes

Activa el registro de acceso.

access_log_filename

myapp_access

Nombre del registro de acceso.

La solicitud del cliente llega a la puerta de enlace IN. La puerta de enlace envía las solicitudes al servidor TOMCAT, el cual proporciona la solicitud. El contenido y los registros se encuentran en el dispositivo de almacenamiento. Los contadores se comunican al dispositivo MON.

Nota: Las aplicaciones Java pueden utilizar muchos tipos de bases de datos. Depende solamente de la presencia del controlador JDBC apropiado en la aplicación. TOMCAT permite conectar cualquier dispositivo de base de datos a su terminal db.

WEB5 como front-end para TOMCAT

El diagrama siguiente muestra un uso del dispositivo TOMCAT como servidor de aplicaciones y WEB5 como front-end. WEB5 sirve contenido estático y redirige todas las solicitudes que requieren procesamiento de lado de servidor al TOMCAT mediante el protocolo AJP.

Dispositivo de TOMCAT como servidor de aplicaciones y WEB5 como front-end

Nota: Es necesario activar el soporte AJP (active mod_proxy y mod_proxy_ajp) en WEB5 para este modo.

Dispositivos en uso:

Ejemplo de configuración de las propiedades:

Nombre de la propiedad

Valor

Notas

content_on_fs

off

TOMCAT utiliza el contenido del volumen de usuario para todo el contenido.

timezone

EST

Zona horaria del este.

Otros ajustes tienen sus valores predeterminados.

WEB5 debe estar correctamente configurado para trabajar como front-end y comunicarse con TOMCAT mediante el protocolo AJP.

mod_proxy y mod_proxy_ajp deben estar activados incluyendo las siguientes líneas en la configuración de Apache.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 

Se debe especificar parte de la ruta del espacio url para que TOMCAT pueda servir contenido, por ejemplo:

ProxyPass /path-that-served-by-tomcat ajp://aux:8009/some-servlet
ProxyPassReverse /path-that-served-by-tomcat ajp://aux:8009/some-servlet

Por ejemplo:

Ruta

Contenido

Servidor por

/index.html

Documento html estático

Servido por WEB5

/images/*

Archivos gráficos estáticos

Servido por WEB5

/scripts/*.php

Contenido dinámico generado por scripts php

Servido por WEB5

/path-that-served-by-tomcat

Contenido dinámico generado por jsp

Servido por TOMCAT

La solicitud del cliente llega a la puerta de enlace IN. La puerta de enlace reenvía las solicitudes al servidor Web de front-end, el cual sirve solicitudes de páginas html estáticas, archivos gráficos y scripts php. Las solicitudes de páginas jsp o páginas de servlet se reenvían a AppServer, el cual las sirve.

Sitio Web habilitado para Java escalable

Dispositivos en uso:

Configuración de propiedad de ejemplo tanto para AppServer1 como para AppServer2:

Nombre de la propiedad

Valor

Notas

content_on_fs

off

TOMCAT utiliza el contenido del volumen de usuario para todo el contenido.

timezone

EST

Zona horaria del este.

Otros ajustes tienen sus valores predeterminados.

La solicitud del cliente llega a la puerta de enlace IN. La puerta de enlace envía las solicitudes al equilibrador de carga lb, el cual dirige la solicitud a uno de los servidores, AppServer1 y AppServer2.

Notas

Software de fuente abierta y de terceros utilizado dentro del dispositivo

TOMCAT y TOMCAT64 utilizan los siguientes paquetes de fuente abierta de terceros, además de los paquetes de fuente abierta de terceros que utilizan sus clases base LUX5 y LUX64 respectivamente.

TOMCAT

Software

Versión

Modificado

Licencia

Notas

Apache Tomcat

5.5.28

Licencia de Apache v2.0

Página principal

JDK

1.6.0.18

No

Sun-BCL

disponible en el sitio Web de Sun

samba-client

3.0.28-0.el5.8

No

GPLv2

N/D

samba-common

3.0.28-0.el5.8

No

GPLv2

N/D

TOMCAT64

Software

Versión

Modificado

Licencia

Notas

Apache Tomcat

5.5.28

Licencia de Apache v2.0

Página principal

JDK

1.6.0.18

No

Sun-BCL

disponible en el sitio Web de Sun

samba-client

3.0.28-1.el5_2.1

No

GPLv2

N/D

samba-common

3.0.28-1.el5_2.1

No

GPLv2

N/D