目录
1、安装 2、配置Tomcat 3、Tomcat的性能调优
一、安装
1、创建用户 处于安全考虑,应该创建一个具有访问权限低的tomcat用户,并以该身份运行tomcat。建议将该用户的登录shell设置为、sbin/nologin,并锁定用户的密码,让他人无法测试到。 您需要用root用户来完成这一动作: useradd -g 46 -s /sbin/nologin -d /opt/tomcat/temp tomcat
2、解压 解压Tomcat二进制发行版目标文件,将其解压到希望存放Tomcat文件的位置: cd $HOME tar zxvf apache-tomcat-6.0.14.tar.gz
3、设置文件权限 chown -R tomcat apache-tomcat-6.0.14
4、配置环境变量 Tomcat需要 JAVA_HOME 和CATALINA_HOME两种环境变量方可运行。JAVA_HOME指Tomcat使用的Java虚拟机(JVM,Java Virtual Machine),而CATALINA_HOME指Tomcat二进制文件的根目录。 需要将下列两行增加到/etc/profile的尾部,实现对其进行设置: export JAVA_HOME=/Library/Java/Home export CATALINA_HOME=/usr/local/tomcat
5、Tomcat的启动、停止 启动:bin/startup.sh 停止:bin/shutdown.sh
二、配置
1、修改端口 若要在一台服务器上运行多个Tomcat,为避免端口冲突,需要修改如下端口: <Server port="8005" shutdown="SHUTDOWN"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
2、Java VM配置 Tomcat的运行方式部分取决于所运行的Java虚拟机的配置信息。例如,如果Tomcat在启动时没有足以运行webapp的内存,他会给所有Web客户端提供error页。如果tomcat虽有启动webapp的充足内存,但没有配置足够的进程,那么部分或全部的请求会得到error响应或断开连接。 更改文件:\bin\catalina.sh Java VM配置选项 用途 JVM选项 含义 内存设置 -Xms384M 设置JVM启动时堆栈内存的大小 内存设置 -Xms384M 设置JVM可扩展的最大堆栈内存 调试安全性 -Djava.security.debug=all 出于安全性,打开所有调试输出 调试 -enableassertions 启用assertion检查 本地化 -Duser.language=en 设置Tomcat使用的绑定语言 本地化 -Dfile.encoding=UTF-8 设置Tomcat使用的默认文件编码规则
三、Tomcat的性能调优
1、调校服务器是想当复杂的艺术,包括了测量、了解、改变、与再次测量。调校的基本步骤如下: 1、决定需要测量的对象 2、决定测量的方式 3、测量 4、从测量结果中,了解其含义 5、以预期会提升测量结果的方式来修补系统配置 6、测量,并与之前的测量结果比较 7、回到第4步 Tomcat有两种基本的调校方式: 外部调校:涉及到非Tomcat组件的调校,如Tomcat所运行的操作系统,以及运行Tomcat的Java虚拟机器。 内部调校:与Tomcat本身有关的调校,包括改变配置文件中的设定值,以及修改Tomcat本身的源代码。
2、JVM的性能
通常,人们会设法修改JVM启动参数,以使Tomcat JVM能更快地为Web应用程序网页服务。这可以提供一些帮助,但通常不会在性能上提高较高百分比。其主要原因是这样处理不会太有用:JVM提供商在发布JDK之前就已进行过自身测试,寻找哪些设置会产生最佳性能,并让这些设置变成默认值。
警告:如果将JVM启动参数激活为非默认设置值,则会降低JVM的性能。尽量不要修改!
但是JVM的堆栈内存分配除外。JVM提供商默认选择分配少量内存(在Sun JVM中是32MB)以启动JVM,且如果Java应用程序需要更多内存,那么在应用程序暂停时,JVM的heap会被重新分配为更大。在达到heap内存大小的最高限度之前,JVM会在小内存增过程中多次执行前面的重新分配。因为应用冲虚每次都要暂停,heap大小才会增长,那么性能也会受到影响。如果在Tomcat正提供Web应用程序网页时发生这样的事情,那么对所有此时正在请求这一网页的Web客户端而言,暂停发生了,网页响应所耗时间将显得比正常情况下要长。为避免这种暂停,可以设置最小的heap大小与最大heap大小相等。要在Tomcat的JVM启动参数中处理这件事情,只要设置JAVA_OPTS环境变量为类似于-Xms512M-Xms512M之类的值。
3、内部调校
这能使Tomcat实例运行得更快,而且无论使用何种操作系统或JVM,在许多情形下,你都可能无法控制部署的机器的操作系统或JVM。不过,你应能影响Tomcat本身的变化。
1、停用DNS查询 当Web应用程序想要记录客户端的信息时,它可以记录客户端的IP地址。避免DNS查询域名消耗网络资源。 在Tomcat的server.xml文件中嗯ableLookups设置为false即可。
2、调整线程数量 通过更改Connector的minThreads与maxThreads的值,可以控制所分配的线程数。签名所示的值适合一般的安装,而随着网站的扩大可能需要增长,minThreads的值应该大到能够处理最小负载量。即如果在低谷时刻,每秒可访问五次网页,而每次请求在一秒钟之内可完成,则预先分配五个线程就够了。随后在高峰时刻,则需要分配更多线程(最多到maxThreads所设定的数目)。为了防止流量暴增(或黑客的DoS攻击)让系统超出JVM的最大内存限制,而使服务器瘫痪,因此一定要设定上限。 将这两个参数设置为最佳值的最好方式是对各个参数尝试许多不同的设定值,然后以仿真的网络流量进行测试,同时并观察响应时间与内存的占用情况。
3、加速JSP的编译速度 在编译时使用JspC预编译JSP。
4、容量规划
无论调校多少配置文件与进行多少次测试,如果没有符合网站预期流量大小的硬件与宽带,实际上也帮不了忙。 容量规划的大致定义为:通过研究或预测网站必须处理的总网络流量,决定可接受的服务质量与寻找满足或超越服务器软件需求,来预测网站所需的计算机硬件、操作系统与宽带的活动。在这里所说的服务器软件包括Tomcat,以及在Tomcat前端使用的第三方Web服务器和负载均衡器。 两种主要容量规划的类型:经验式与学术式(如企业容量规划)的方法。
经验式的容量规划: 经验式的容量规划是一种轻量级的规划方式,他不一定要很精确,但已足够让公司免于完全不做容量规划的后果。例如,对于网站在高峰时有多少输出流量,你可以最最佳预测,然后将该数字加倍。该数字则成为网站最新输出宽带的需求。
企业容量规划: 目的是更精确,也需要更久的时间。
Tomcat上的容量规划: 若要对运行Tomcat的服务机器进行容量规划,可以研究及规划下列的任何项目: 服务器计算机硬件 网络宽带 服务器操作系统