上一主题: 应用服务器组件

下一主题: JBOSS、JBOSS64:JBoss 应用服务器

TOMCAT、TOMCAT64:应用服务器

最新版本:2.0.2-1

Tomcat 服务器

概览

目录

系统

类别

应用服务器

用户卷

yes

最小 内存

160 MB

操作系统

Linux

约束

no

问题/注释

咨询论坛

功能概述

TOMCAT 是基于 Sun Java 计算机和 Apache Tomcat 的 Web 服务器组件,它是根据 Apache 授权开发的 Java Servlet 和 JavaServer Pages 容器。 tomcat.apache.org 上提供了 Tomcat 的主要文档。 Tomcat 为 Servlet 和 JSP 提供符合标准的支持。 Tomcat 可以作为单机 Web 服务器或应用服务器工作。

TOMCAT 提供静态 Web 内容,可自动部署 Web 应用,从用户可配置的内容卷执行 servlet 和 JavaServer Pages。 文档的路径是可配置的,因此,可以在多个 Web 服务器与为不同内容提供服务的其他组件之间共享相同卷。

对于来自前端服务器(例如包含 mod_proxy_ajp 的 Apache)的请求,TOMCAT 为 Web 客户端的 HTTP/1.1 和 HTTP/1.0 协议以及 AJP 1.3 提供服务。

与 WEBx 服务器一样,Tomcat 有三个通用输出终端,用于通过内容卷上的脚本访问外部服务。 db 终端用于访问各种数据库;fs 终端用于访问共享文件存储(使用 NFS);aux 终端是为了将电子邮件发送到 SMTP 服务器而创建的。

应该使用日志终端将 TOMCAT 连接到 TOMCAT 可在其上存储日志文件的共享文件系统。

服务器的配置是使用各种属性定义的。 这些属性旨在以易于配置的方式涵盖大多数用法变型,在大多数情况下,只需要将其中的少数属性设置为非默认值

名称

最新版本

操作系统

Java 计算机版本

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 bit)

JDK 1.6.0.22

6.0.29

边界

用于 TOMCAT 的资源

资源

最小值

最大值

默认值

CPU

0.1

16

0.3

内存

160 MB

4G

512 MB

带宽

1 Mbps

2 Gbps

250 Mbps

用于 TOMCAT64 的资源

资源

最小值

最大值

默认值

CPU

0.1

16

0.3

内存

160 MB

64G

512 MB

带宽

1 Mbps

2 Gbps

250 Mbps

请注意下列各项:

资源

最小值

最大值

默认值

CPU

0.1

16

0.3

内存

160 MB

64G

512 MB

带宽

1 Mbps

2 Gbps

250 Mbps

请注意下列各项:

资源

最小值

最大值

默认值

CPU

0.1

16

0.3

内存

160 MB

64G

512 MB

带宽

1 Mbps

2 Gbps

250 Mbps

请注意下列各项:

重要信息! TOMCAT 具有从 32 位 java 计算机继承的限制。 此 java 计算机无法使用超过约 2.6 Gb 的内存,为 TOMCAT 分配超过 2.8 Gb 的内存会导致效率低下。

存储 Java 应用会话的内存要求

除了用于 Java 应用的内存外,一定量的内存必须可用于存储应用会话。 每个空会话(没有存储其他数据)使用接近 2 KB 的内存。 在会话生存期内会使用该内存(会话的默认生存期是 30 分钟)。 通过修改应用的 web.xml 配置文件或向其添加其他部分,可以配置会话生存期。 例如:包括下面的代码可将会话生存期配置为 1 分钟:

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

如果预计 30 分钟内有 1 万个唯一访问者,则需要额外的 20 Mb 可用内存。 通常:所需的内存量 = 同时处于活动状态的会话的最大数量 * 会话的平均大小。

重要信息! 如果没有足够的内存可用,则 tomcat 可能会发生故障。 这取决于正在 tomcat 中运行的用户应用,并不是组件本身的限制。

终端

名称

方向

协议

说明

in

in

HTTP

为 Web 客户端发出的 HTTP 请求提供服务。 支持 HTTP/1.1、HTTP/1.0 和 AJP 协议。

db

out

Any

访问数据库服务器。 用法由驻留在内容卷上的任何脚本(如果有)定义。 如果未使用该终端,则可将其保持未连接状态。

fs

out

NFS

访问用于共享文件存储的网络文件系统,在 NFS 上提供读/写文件访问权限。 用法由驻留在内容卷上的任何脚本(如果有)定义。 内容卷上的软件将已挂接的远程文件系统“视为”组件文件系统空间中的 /mnt/fs。 如果未使用该终端,则可将其保持未连接状态。 连接的服务器必须具有一个通过 NFS 导出的、名为 /mnt/data 的读/写共享。

log

out

CIFS

访问用于存储访问和错误日志的基于 CIFS 的网络文件系统。 如果未使用该终端,则可将其保持未连接状态。 连接的服务器必须允许匿名登录并具有一个导出的、名为 share 的读/写共享。

aux

out

Any

访问 SMTP 服务器以发送传出的电子邮件。
如果未使用该终端,则可将其保持未连接状态。

net

out

Any

用于子网访问的网关输出。
如果未使用该终端,则可将其保持未连接状态。

mon

out

CCE

向 MON 组件发送性能和资源使用情况统计信息。
如果未使用该终端,则可将其保持未连接状态。

默认接口已启用。 它用于诊断和故障排除(通过 SSH)。 此组件的未来版本可能会禁用 SSH 访问。

用户卷

说明

目录

用于存储 tomcat 应用、应用数据、临时文件和工作文件的卷。 仅在 content_on_fs 属性设置为 off 时才使用此卷。

属性

属性名

类型

说明

content_on_fs

字符串

指定内容是相对于 fs 终端上的文件系统还是位于内容卷上。 默认值:off(在内容卷上)

hostname

字符串

网站的主机名。 默认值:localhost

tomcat_port

整数

Tomcat 侦听传入的 HTTP 请求的端口。 默认值:8080

session_timeout

整数

用户会话的超时(分钟),在此期间 TOMCAT 将在内存中保存与用户会话相关的所有数据。 默认值:30。

max_connections

整数

允许的最大并发连接数。 在达到此数目时,仍会接受新连接,但是其处理会延迟,直到另一个连接关闭。 默认值:100

heap_size

整数

为 Java 堆(-Xmx Java 选项)分配的内存(兆字节)。 如果为 0,将自动计算此值。 默认值:0

perm_size

整数

为 Java 永久对象(-XX:PermSize Java 选项)分配的内存(兆字节)。 如果为 0,将自动计算此值。 默认值:0

app_base

字符串

文档、工作文件和临时文件的根目录。 将在此文件夹中创建 Tomcat 的 {catalina.base} 目录的典型结构:shared 表示所有 java 应用共有的库;temp 和 work 表示临时文件和工作文件;在 work_dir 属性中定义的子目录(与 ${catalina.base}/webapps 类似)。 默认值:空

work_dir

字符串

要处理的文档所在的目录。 还用于自动部署目的。 有关详细信息,请访问 Tomcat 的网站-自动应用部署。 默认值:webapps

时区

字符串

指定在组件中使用的时区。 如果此属性为空,则时区未经修改且保持原样。 此处提供可支持时区的列表。 默认值:空

日志记录属性

属性名

类型

说明

logs_enabled

字符串

完全启用或禁用日志记录。 默认值:no

logs_base_dir

字符串

存储日志文件的目录。 默认值:空,即日志将放置在已挂接的 NAS 卷的根目录中

error_log_filename

字符串

错误日志的文件名前缀。 默认值:catalina

log_level

字符串

日志记录级别。 值为 SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST 和 ALL(按详细级别增大顺序排列)。 有关日志级别的更详细说明,请参阅 Tomcat 文档。 默认值:INFO

enable_access_log

字符串

启用或禁用访问日志。 默认值:no

access_log_filename

字符串

访问日志的文件名前缀。 默认值:access.log

自定义计数器

TOMCAT 组件通过 mon 终端报告以下自定义计数器。 这些计数器属于 TOMCAT 计数器组(对于 TOMCAT64 的情况则为 TOMCAT64 计数器组):

计数器名称

说明

Classes loaded

已加载的类的数目

Classes loaded bytes

已加载的 KB 数

Classes unloaded

已卸载的类的数目

Classes unloaded bytes

已卸载的 KB 数

Classes load/unload execution time

执行类加载/卸载操作所用的时间

Compiler compiled

已执行的编译任务数

Compiler failed

失败的编译任务数

Compiler invalid

失效的编译任务数

Compiler execution time

执行编译任务所用的时间

Heap s0 space capacity

当前幸存者空间 0 容量

Heap s1 space capacity

当前幸存者空间 1 容量

Heap s0 space utilization

幸存者空间 0 利用率

Heap s1 space utilization

幸存者空间 1 利用率

Heap eden space capacity

当前 eden 空间容量

Heap eden space utilization

Eden 空间利用率

Heap old space capacity

当前的旧空间容量

Heap old space utilization

旧空间利用率

Heap permanent space capacity

当前的永久空间容量

Heap permanent space utilization

永久空间利用率

Heap young generation GC events

年轻代 GC 事件数(GC-垃圾回收)

Heap young generation GC time

年轻代垃圾回收时间

Heap number of GC events

完整 GC 事件的数目

Heap full GC time

完整垃圾回收的时间

Heap total GC time

总垃圾回收时间

Pool current new generation

当前的新一代容量

Pool min new generation

最小的新一代容量

Pool max new generation

最大的新一代容量

Pool current old generation

当前的老一代容量

Pool min old generation

最小的老一代容量

Pool max old generation

最大的老一代容量

Pool current permanent generation

当前的永久一代容量

Pool min permanent generation

最小的永久一代容量

Pool max permanent generation

最大的永久一代容量

New generation tenuring threshold

期限阈值

New generation max tenuring threshold

最大期限阈值

Desired survivor size

Desired survivor size

Compiler tasks

已执行的编译任务数

可能的启动错误

在组件启动失败的情况下,系统日志可能记录以下错误消息:

错误消息

说明

错误: 启用了日志但未连接日志终端。

未连接日志终端,但 logs_enabled 或 enable_access_log 设置为 yes。

错误: 属性 content_on_fs 设置为“off”,但缺少本地内容卷。

content_on_fs 设置为 off,指定必须在本地挂接数据卷,但是 TOMCAT 无法挂接内容卷。 最有可能的原因是,内容卷未格式化,或未在 TOMCAT 属性中定义。

错误: 无法挂接 nfs 共享。

TOMCAT 无法挂接 nfs 共享。 可能的原因是,未连接 fs 或在 NAS 之前启动了 TOMCAT(或者任意组件连接到 fs 终端)

显示板消息

消息

说明

数据存储容量不到可用磁盘空间的 5%

通过 fs 终端访问的数据卷容量不到可用磁盘空间的 5%。 建议增加卷的大小。

数据存储容量不到可用磁盘空间的 1%

通过 fs 终端访问的数据卷容量不到可用磁盘空间的 1%。 需要立即引起注意;可能发生数据丢失。

内容卷容量不到可用磁盘空间的 5%

组件上的内容卷容量不到可用磁盘空间的 5%。 建议增加卷的大小。

内容卷容量不到可用磁盘空间的 1%

组件上的内容卷容量不到可用磁盘空间的 1%。 需要立即引起注意;可能发生数据丢失。

性能

打开日志记录时(通过设置 logs_enabled = yes 启用错误日志记录,或通过设置 enable_access_log = yes 启用访问日志记录)TOMCAT 性能可能会受影响。 下表包含使用 Apache Benchmark 实用工具(Apache Web 服务器版本 2.0 和 2.2 随附)禁用日志时执行的基准结果(指定以 rps(每秒请求数)为单位)。 Apache 网站上提供了有关 ab 的更多信息。 基准使用了下列设置:"bw=500M mem=2G cpu=2"。

并发

rps

1 个并发客户端

2800-3200 rps

10 个并发客户端

7500-7900 rps

100 个并发客户端

7700-8100 rps

典型用法

简单的支持 Java 的网站

TOMCAT 将处理内容卷中的应用。

正在使用的组件:

属性名

说明

hostname

www.mysite.org

站点的主机名。

app_base

MyApp

 

content_on_fs

off

TOMCAT 将用户卷内容用于所有内容。

时区

EST

EST 时区。

tomcat_port

80

HTTP 协议的标准端口。

客户端请求到达 IN 网关。 网关会将请求转发到 TOMCAT 服务器,后者处理请求。

具有数据库、日志和监控的双层应用

正在使用的组件:

示例属性配置:

属性名

说明

hostname

www.mysite.org

站点的主机名

app_base

MyApp

 

content_on_fs

on

TOMCAT 通过 fs 终端为所有内容使用远程存储

时区

EST

EST 时区

tomcat_port

80

HTTP 协议的标准端口

max_connections

200

最多 200 个并发用户

logs_enabled

yes

启用错误日志

logs_base_dir

MyApp_Log_Dir

 

log_level

INFO

 

error_log_filename

error_log

错误日志名称

enable_access_log

yes

启用访问日志

access_log_filename

myapp_access

访问日志名称

客户端请求到达 IN 网关。 网关会将请求转发到 TOMCAT 服务器,后者处理请求。 内容和日志位于存储组件。 计数器被报告给 mon 组件。

注意:Java 应用可以使用多种数据库类型。 它仅取决于应用中是否存在适当的 JDBC 驱动程序。 TOMCAT 允许将任何数据库组件连接到其 db 终端。

作为 TOMCAT 前端的 WEB5

下图显示 TOMCAT 组件作为应用服务器以及 WEB5 作为前端的用法。 WEB5 处理静态内容,并使用 AJP 协议将需要服务器端处理的所有请求重定向到 TOMCAT。

作为应用服务器的 TOMCAT 组件和作为前端的 WEB5

注意:有必要针对此模式在 WEB5 中启用 AJP 支持(启用 mod_proxy 和 mod_proxy_ajp)。

正在使用的组件:

示例属性配置:

属性名

说明

content_on_fs

off

TOMCAT 将用户卷内容用于所有内容

时区

EST

EST 时区

其他设置具有其默认值。

WEB5 必须正确进行配置才能作为前端工作,并使用 AJP 协议与 TOMCAT 通信。

必须启用 mod_proxy 和 mod_proxy_ajp,方法是在 apache 配置中包括以下几行:

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

必须指定要由 TOMCAT 处理的某个 url 空间路径,例如

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

例如:

路径

目录

处理者

/index.html

静态 html 文档

由 WEB5 处理

/images/*

静态图形文件

由 WEB5 处理

/scripts/*.php

由 php 脚本生成的动态内容

由 WEB5 处理

/path-that-served-by-tomcat

由 jsp 生成的动态内容

由 TOMCAT 处理

客户端请求到达 IN 网关。 网关会将请求转发到前端 Web 服务器,后者处理对静态 html 页面、图形文件和 php 脚本的请求。 对 jsp 页面或 servlet 页面的请求将转发到 AppServer 并由它处理。

可扩展的支持 Java 的网站

正在使用的组件:

AppServer1 和 AppServer2 的示例属性配置:

属性名

说明

content_on_fs

off

TOMCAT 将用户卷内容用于所有内容

时区

EST

EST 时区

其他设置具有其默认值。

客户端请求到达 IN 网关。 网关会将请求转发到 lb 负载均衡器,后者将请求定向到服务器 AppServer1 和 AppServer2 中的一个。

说明

组件内所用的开源和第三方软件

TOMCAT 和 TOMCAT64 除了使用其基类 LUX5 和 LUX64 分别使用的第三方开源软件包外,还使用下列第三方开源软件包。

TOMCAT

软件

版本

已修改

许可

说明

Apache Tomcat

5.5.28

Apache 许可证v2.0

主页

JDK

1.6.0.18

Sun-BCL

Sun 网站上已提供

samba-client

3.0.28-0.el5.8

GPLv2

N/A

samba-common

3.0.28-0.el5.8

GPLv2

N/A

TOMCAT64

软件

版本

已修改

许可

说明

Apache Tomcat

5.5.28

Apache 许可证v2.0

主页

JDK

1.6.0.18

Sun-BCL

Sun 网站上已提供

samba-client

3.0.28-1.el5_2.1

GPLv2

N/A

samba-common

3.0.28-1.el5_2.1

GPLv2

N/A