tomcat性能优化教程文件

tomcat性能优化教程文件
tomcat性能优化教程文件

猫”。。。。。。大家可想而知,会得到什么样的效果呢?下面就请请详细的设置吧!

上述问题解决后,我们又碰到一个新的问题,32位系统下JVM对内存的限制:不能突破2GB内存,即使你在Win2003 Advanced Server下你的机器装有8GB-16GB的内存,而

敲入一个回车,加入如下的参数

Linux系统中tomcat的启动参数

上面参数好多啊,可能有人写到现在都没见一个tomcat的启动命令里加了这么多参数,当然,这些参数只是我机器上的,不一定适合你,尤其是参数后的value(值)是需要根据你自己的实际情况来设置的。

参数解释:

ü-server

我不管你什么理由,只要你的tomcat是运行在生产环境中的,这个参数必须给我加上

因为tomcat默认是以一种叫java –client的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的,这也就意味着你的tomcat以server模式运行时将拥有:更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量。。。更。。。还有更。。。

Y给我记住啊,要不然这个-server都不加,那是要打屁股了。

ü-Xms–Xmx

即JVM内存设置了,把Xms与Xmx两个值设成一样是最优的做法,有人说Xms为最小值,Xmx为最大值不是挺好的,这样设置还比较人性化,科学化。人性?科学?你个头啊。

大家想一下这样的场景:

一个系统随着并发数越来越高,它的内存使用情况逐步上升,上升到最高点不能上升了,开始回落,你们不要认为这个回落就是好事情,由其是大起大落,在内存回落时它付出的代价是CPU高速开始运转进行垃圾回收,此时严重的甚至会造成你的系统出现“卡壳”就是

你在好好的操作,突然网页像死在那边一样几秒甚至十几秒时间,因为JVM正在进行垃圾回收。

因此一开始我们就把这两个设成一样,使得Tomcat在启动时就为最大化参数充分利用系统的效率,这个道理和jdbcconnection pool里的minpool size与maxpool size的需要设成一个数量是一样的原理。

如何知道我的JVM能够使用最大值啊?拍脑袋?不行!

在设这个最大内存即Xmx值时请先打开一个命令行,键入如下的命令:

看,能够正常显示JDK的版本信息,说明,这个值你能够用。不是说32位系统下最高能够使用2GB内存吗?即:2048m,我们不防来试试

可以吗?不可以!不要说2048m呢,我们小一点,试试1700m如何

嘿嘿,连1700m都不可以,更不要说2048m了呢,2048m只是一个理论数值,这样说吧我这边有几台机器,有的机器-Xmx1800都没问题,有的机器最高只能到-Xmx1500m。

因此在设这个-Xms与-Xmx值时一定一定记得先这样测试一下,要不然直接加在tomcat 启动命令行中你的tomcat就再也起不来了,要飞是飞不了,直接成了一只瘟猫了。

ü–Xmn

设置年轻代大小为512m。整个堆大小=年轻代大小+ 年老代大小+ 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

ü-Xss

是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。一般不易设置超过1M,要不然容易出现out ofmemory。

ü-XX:+AggressiveOpts

作用如其名(aggressive),启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加入的优化技术(如果有的话)

ü-XX:+UseBiasedLocking

启用一个优化了的线程锁,我们知道在我们的appserver,每个http请求就是一个线程,有的请求短有的请求长,就会有请求排队的现象,甚至还会出现线程阻塞,这个优化了的线程锁使得你的appserver内对线程处理自动进行最优调配。

ü-XX:PermSize=128M-XX:MaxPermSize=256M

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;

在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

那么,如果是物理内存4GB,那么64分之一就是64MB,这就是PermSize默认值,也就是永生代内存初始大小;

四分之一是1024MB,这就是MaxPermSize默认大小。

ü-XX:+DisableExplicitGC

在程序代码中不允许有显示的调用”System.gc()”。看到过有两个极品工程中每次在DAO 操作结束时手动调用System.gc()一下,觉得这样做好像能够解决它们的out ofmemory问题一样,付出的代价就是系统响应时间严重降低,就和我在关于Xms,Xmx里的解释的原理一样,这样去调用GC导致系统的JVM大起大落,性能不到什么地方去哟!

ü-XX:+UseParNewGC

对年轻代采用多线程并行回收,这样收得快。

ü-XX:+UseConcMarkSweepGC

即CMS gc,这一特性只有jdk1.5即后续版本才具有的功能,它使用的是gc估算触发和heap占用触发。

我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多,而每次GC耗时仅为几毫秒。

ü-XX:MaxTenuringThreshold

设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。

这个值的设置是根据本地的jprofiler监控后得到的一个理想的值,不能一概而论原搬照抄。

ü-XX:+CMSParallelRemarkEnabled

在使用UseParNewGC 的情况下, 尽量减少mark 的时间

ü-XX:+UseCMSCompactAtFullCollection

在使用concurrent gc 的情况下, 防止memoryfragmention, 对live object 进行整理, 使memory 碎片减少。

ü-XX:LargePageSizeInBytes

指定Java heap的分页页面大小

ü-XX:+UseFastAccessorMethods

get,set 方法转成本地代码

ü-XX:+UseCMSInitiatingOccupancyOnly

指示只有在oldgeneration 在使用了初始化的比例后concurrent collector 启动收集

ü-XX:CMSInitiatingOccupancyFraction=70

CMSInitiatingOccupancyFraction,这个参数设置有很大技巧,基本上满足(Xmx-

Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn就不会出现promotion failed。在我的应用中Xmx是6000,Xmn是512,那么Xmx-Xmn是5488兆,也就是年老代有5488 兆,CMSInitiatingOccupancyFraction=90说明年老代到90%满的时候开始执行对年老代的并发垃圾回收(CMS),这时还剩10%的空间是5488*10%=548兆,所以即使Xmn(也就是年轻代共512兆)里所有对象都搬到年老代里,548兆的空间也足够了,所以只要满足上面的公式,就不会出现垃圾回收时的promotion failed;

因此这个参数的设置必须与Xmn关联在一起。

ü-Djava.awt.headless=true

这个参数一般我们都是放在最后使用的,这全参数的作用是这样的,有时我们会在我们的J2EE工程中使用一些图表工具如:jfreechart,用于在web网页输出GIF/JPG等流,在winodws环境下,一般我们的app server在输出图形时不会碰到什么问题,但是在

linux/unix环境下经常会碰到一个exception导致你在winodws开发环境下图片显示的好好可是在linux/unix下却显示不出来,因此加上这个参数以免避这样的情况出现。

上述这样的配置,基本上可以达到:

ü系统响应时间增快

üJVM回收速度增快同时又不影响系统的响应率

üJVM内存最大化利用

ü线程阻塞情况最小化

2.3 Tomcat容器内的优化

这一行就是我们的tomcat容器性能参数设置的地方,它一般都会有一个默认值,这些默认

好大一陀唉。。。。。。

没关系,一个个来解释

üURIEncoding=”UTF-8”

使得tomcat可以解析含有中文名的文件的url,真方便,不像apache里还有搞个

mod_encoding,还要手工编译

ümaxSpareThreads

maxSpareThreads 的意思就是如果空闲状态的线程数多于设置的数目,则将这些线程中止,减少这个池中的线程总数。

üminSpareThreads

最小备用线程数,tomcat启动时的初始化的线程数。

üenableLookups

这个功效和Apache中的HostnameLookups一样,设为关闭。

üconnectionTimeout

connectionTimeout为网络连接超时时间毫秒数。

ümaxThreads

maxThreads Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数,即最大并发数。

üacceptCount

acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection

可以看到如果把useURIValidationHack设成"false",可以减少它对一些url的不必要的检查从而减省开销。

üenableLookups="false"

为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值。

üdisableUploadTimeout

HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也

好了,所有的Tomcat优化的地方都加上了。结合第三天中的Apache的性能优化,我们这个架构可以“飞奔”起来了,当然这边把有提及任何关于数据库优化的步骤,但仅凭这两步,我们的系统已经有了很大的提升。

举个真实的例子:上一个项目,经过4轮performance testing,第一轮进行了问题的定位,第二轮就是进行了apache+tomcat/weblogic的优化,第三轮是做集群优化,第四轮是sql与codes的优化。

在到达第二轮时,我们的性能已经提升了多少倍呢?我们来看一个loaderrunner的截图吧:

左边第一列是第一轮没有经过任何调优的压力测试报告。

右边这一列是经过了apache优化,tomcat优化后得到的压力测试报告。

大家看看,这就提高了多少倍?这还只是在没有改动代码的情况下得到的改善,现在明白了好好的调优一

个apache和tomcat其实是多么的重要了?如果加上后面的代码、SQL的调优、数据库的调优。。。。。。所以我在上一个工程中有单笔交易性能(无论是吞吐量、响应时间)提高了80倍这样的极端例子的存在。

设计一个Tomcat访问日志分析工具

常使用web服务器的朋友大都了解,一般的web server有两部分日志: 一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息 二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。 现在我来和大家介绍一下利用tomcat产生的访问日志数据,我们能做哪些有效的分析数据? 首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的安装目录 把以下的注释()去掉即可。 其中directory是产生的目录tomcat安装${catalina}作为当前目录 pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。其具体的表达式为%h %l %u %t "%r" %s %b 但本人建议采用以下具体的配置,因为标准配置有一些重要的日志数据无法生。 %h %l %u %t "%r" %s %b %T 具体的日志产生样式说明如下(从官方文档中摘录): * %a - Remote IP address * %A - Local IP address * %b - Bytes sent, excluding HTTP headers, or '-' if zero * %B - Bytes sent, excluding HTTP headers * %h - Remote host name (or IP address if resolveHosts is false) * %H - Request protocol * %l - Remote logical username from identd (always returns '-') * %m - Request method (GET, POST, etc.) * %p - Local port on which this request was received * %q - Query string (prepended with a '?' if it exists) * %r - First line of the request (method and request URI) * %s - HTTP status code of the response * %S - User session ID * %t - Date and time, in Common Log Format * %u - Remote user that was authenticated (if any), else '-' * %U - Requested URL path * %v - Local server name * %D - Time taken to process the request, in millis * %T - Time taken to process the request, in seconds There is also support to write information from the cookie, incoming header, the Session or something else in the ServletRequest. It is modeled after the apache syntax: * %{xxx}i for incoming headers

(完整版)Tomcat6操作手册

Tomcat6操作手册 安装tomcat软件(此处用到的是tomcat的ZIP包,直接解压即可) 我在D盘下创建一个名为App的文件夹,然后将tomcat的ZIP包解压到此文件夹下 在D:\App\apache-tomcat-6.0.20\conf的文件夹下有个名为server.xml的文件,这是tomcat 的配置文件,里面有说明此软件的服务端口等信息,这些端口都可以修改,不过不要与其他的软件端口冲突了 Tomcat服务关闭的端口:8005 服务访问的端口:8080,还要在下面加一句话:URIEncoding="utf-8" 防止出现乱码 以及ajp的整合端口(tomcat与iis或者apache整合):8009,而Tomcat默认的SSL端口号是8443

项目的存放位置,默认在tomcat安装目录下的webapps内,也可以放在其他盘符下,只要将路径改为所要存放项目的路径即可 Webapps文件夹存放网站项目,或者说是网页文件,而webapps\ROOT目录是项目主应用程序,也是http: ip :8080访问时的主程序,一般情况下将除了ROOT的其他目录都删除,因为其他的目录都是放实例的,无用 lib文件夹用于存放java包,后缀名:.jar

看完这些文件后,要将tomcat的服务启动,以便访问网页,因为不是用.exe的安装程序安装的tomcat,所以服务不会自动加到系统里,我们要手动加入系统内 一种方法:启动tomcat的服务,只需要双击startup.bat即可,当出现“信息: Server startup in 511 ms”时,证明服务已经启动,也可以访问tomcat的页面了,但是这个cmd 框不能关掉,关掉后服务关闭 另一种方法:将服务加到系统内。先要进入到D:\App\apache-tomcat-6.0.20\bin目录下,然后执行service.bat install tomcat的命令(用法是:service.bat install/remove [service_name]),就会将tomcat的服务加到系统服务内,服务名称为Apache Tomcat tomcat 启动服务

Tomcat网站发布配置方案详细说明

Tomcat网站发布配置方案详细说明 修改端口、修改默认发布目录、多域名绑定 一、修改发布端口号为80(Tomcat默认为8080) 打开配置文件(我的如下:E:\J2EEServer\Tomcat 6.0\conf\server.xml),找到: 代码如下: 修改后: 其实这里就是把port:8080,修改成port:80就可以了,其他的参数不变。这样客户机在访问服务器时直接输入IP或域名就可以了。 二、修改tomcat的字符集 大家在写程序中应该都遇到过中文乱码的问题,除了保证页面、数据库的字符集保持一致外还有一点需要注意,就是tamcat的字符集。有时从头到尾的检查程序,发现程序一切正常,可就是有乱码,看看Tomcat的字符集吧!找到E:\Tomcat 6.0\conf\server.xml: 代码如下:

Tomcat服务器性能调优几个方面

Tomcat性能调优几个方面 一、操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。。 【适用场景】任何项目。 二、Java虚拟机调优 应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改进。 JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。因此对性能要求较高的情况推荐使用 JDK1.6。 【适用场景】任何项目。 三、Apache集成Tomcat Web服务器专门处理HTTP请求,应用服务器是通过很多协议为应用提供商业逻辑。虽然Tomcat也可以作web服务器,但其处理静态html的速度比不上Apache,且其作为web服务器的功能远不如Apache,因此把Apache和Tomcat集成起来,将html和Jsp的功能部分进行明确分工,让Tomcat只处理Jsp部分,其他的由Apache,IIS等web服务器去处理,由此大大提高Tomcat的运行效率。 如果一个项目中大量使用了静态页面、大量的图片等,并有有较大的访问量,推荐使用Apache集成Tomcat的方式来提高系统的整体性能。 Apache和Tomcat的整合有三种方式,分别是JK、http_proxy和ajp_proxy.其中JK方式是最常见的方式,JK本身有两个版本分别是1和2,目前1最新版本是1.2.8,而版本2早已经废弃了。http_proxy是利用Apache自带的mod_proxy 模块使用代理技术来连接Tomcat。Ajp_proxy连接方式其实跟http_proxy方式一样,都是由mod_proxy所提供的功能。只需要把配置中的http://换成ajp://,同时连接的是Tomcat的AJP Connector所在的端口。 相对于JK的连接方式,后两种在配置上比较简单的,灵活性方面也一点都不逊色。但就稳定性而言不像JK这样久经考验,所以建议采用JK的连接方式。Apache+JK+Tomcat配置:

win8中tomcat8.0配置以及sts中启动的说明讲解

关于win8系统tomcat配置以及在sts中启动的说明1.下载tomcat(下载地址:https://https://www.360docs.net/doc/f13630807.html,/) 本人下载的是tomcat8.0版本。 2.点击tomcat8.0进入下载选择界面 3.下载之后将下载的zip文件解压存放到某磁盘根目录下(也可放在其他位置,

但是路径中不要出现中文,本人放在D盘根目录下了) 4.由于是免安装的文件,因此下一步需要进行的就是配置环境变量(前提是在已经配置好jdk的情况下,配置jdk可以参考网上的教程) (1)右键点击我的电脑(这台电脑),点击属性出现如下界面 (2)点击上图中的高级系统设置进入下面界面,之后点击环境变量

(3)点击环境变量之后进入一下界面

(4)点击如图所示的新建按钮新建一个CATALINA_BASE变量,一个CATALINA_HOME 变量,变量值为tomcat文件夹的位置,本人的tomcat存放在D:\apache-tomcat-8.0.32

(5)选中PATH点击编辑,在变量值最后加上;%CATALINA_HOME%\bin;(如果原来在最后有”;”,则不用再%前加入”;”,若没有则需要加入,另外”;”必须为英文字符 (6)这样环境变量就测试完毕,接下来测试是否配置成功,使用快捷键windows+r 打开cmd,回车,之后输入startup回车,之后出现如下两图则表示配置成功。之后右键我的电脑(这台电脑)打开管理,找到服务,启动Apache Tomcat 8.0.32 Server之后打开浏览器输入Http://localhost:8080测试是否出现一下界面,若出现则成功(若出现问题则配置出现问题,或者之前有过tomcat残留文件,需要清空注册表重新配置)

3TOMCAT配置优化(完整版)

Tomcat性能调优及配置技巧 一、Tomcat设置Gzip,减少网络流量 (2) 二、TOMCAT性能参数调优 (2) 环境:Windows2003、jdk1.6以上、tomcat6.0以上 (2) 设置tomcat的java虚拟机参数catalina.sh/bat (2) 设置tomcat服务器参数server.xml设置socket、线程、压缩传输参数 (2) 设置tomcat数据库连接池参数context.xml设置数据库连接池 (2) 设置操作系统tcpip参数,regedit/修改windows的tcpip参数 (3) 三、解决rar、excel格式文件在下载时直接以乱码打开 (3) 四、开启tomcat的SSI功能(用来支持shtml) (4) 五、修改网站访问端口为80 (4) 六、解决中文乱码问题 (4) 七、解决中文文件无法正常下载 (4) 八、不让tomcat列出某目录下的文件 (5) 九、查看现有tomcat的内存大小情况 (5) 十、解决在linux下静态化有些符号出现乱码 (6) 不让tomcat列出某目录下的文件FusionCharts用法详解......................错误!未定义书签。

一、Tomcat设置Gzip,减少网络流量 二、TOMCAT性能参数调优 环境:Windows2003、jdk1.6以上、tomcat6.0以上 设置tomcat的java虚拟机参数catalina.sh/bat JAV A_OPTS="$JAV A_OPTS-server-Xms512m-XX:NewSize=256M-XX:MaxNewSize=512M -XX:MaxPermSize=128m-Xrs-Xss128k-Xloggc:gc.txt-XX:+PrintGC-XX:+PrintGCDetails -XX:+PrintGCTimeStamps-XX:-HeapDumpOnOutOfMemoryError" 设置tomcat服务器参数server.xml设置socket、线程、压缩传输参数 设置tomcat数据库连接池参数context.xml设置数据库连接池

tomcat配置文件server文件详解

配置文件一般都在conf文件夹里,主要有server.xml,context.xml,tomcat_user.xml,web.xml四个常用配置文件,server主要是服务器设置的,例如端口设置,路径设置。context 里设置tomcat数据源,用来连接数据库。tomcat_user主要是用户名和密码的设置。web 是默认首页等等之类的设置。 元素名属性解释 server port 指定一个端口,这个端口负责监听关闭 tomcat 的请求 shutdown指定向端口发送的命令字符串 service name指定service 的名字 Connector(表示客户端和service之间的连接)port 指定服务器端要创建的端口号,并在这个断口 监听来自客户端的请求 minProcessors服务器启动时创建的处理请求的线程数maxProcessors最大可以创建的处理请求的线程数 enableLookups 如果为true ,则可以通过调用 request.getRemoteHost() 进行DNS 查询来 得到远程客户端的实际主机名,若为false 则 不进行DNS 查询,而是返回其ip 地址redirectPort 指定服务器正在处理http 请求时收到了一个 SSL 传输请求后重定向的端口号acceptCount 指定当所有可以使用的处理请求的线程数都被 使用时,可以放到处理队列中的请求数,超过 这个数的请求将不予处理 connectionTimeo ut 指定超时的时间数( 以毫秒为单位) Engine(表示指定service 中 的请求处理机,接收和处理来自Connector的请求)defaultHost 指定缺省的处理请求的主机名,它至少与其中 的一个host 元素的name 属性值是一样的 Context(表示一个 web 应用程序,通常为WAR 文件,关于WAR 的具体信息见servlet 规范)docBase应用程序的路径或者是WAR 文件存放的路径path 表示此web 应用程序的url 的前缀,这样请 求的url为http://localhost:8080/path/ **** reloadable 这个属性非常重要,如果为true ,则 tomcat 会自动检测应用程序的 /WEB-INF/lib 和/WEB-INF/classes 目录的 变化,自动装载新的应用程序,我们可以在不 重起tomcat 的情况下改变应用程序 host(表示name指定主机名

如何优化提高tomcat启动速度

如何优化提高tomcat启动速度 在tomcat启动的时候,我们可以做一些优化设置来使得tomcat的启动更快速,下面是一些常见的优化加速启动的方法建议(以tomcat-7.+为例说明)。 1、 Jars包 1.1、将一些不必要的jar包去掉,当tomcat启动加载jar包的时候,会去搜寻每个jar包里的class文件,这些都会耗费一些时间,如果你把不必要的jar 包去掉了,很显然会节省时间。 1.2、你可以将一些与TLD files、注解、网络碎片无关的jar包加入到属性 tomcat.util.scan.DefaultJarScanner.jarsToSkip的值中,这可以在 conf/catalina.properties中进行设置。 2、缓存 你可以在bin/catalina.sh中设置jvm所能使用到的缓存大小,如下:JAVA_OPTS=?-Xms1024m -Xmx1024m? 3、配置文件

Tomcat的配置比如server.xml是xml文件,而xml的解析也是要花时间的,如果我们能将xml配置文件尽可能地弄得简洁一些,比如去掉一些没有用到的节点,这也有助于减少启动的时间,虽然这个节省的时间看来很少。 4、应用程序 4.1、确保你程序在启动的时候没有一些处理很耗时的地方。 4.2、删除掉tomcat自带的目录webapps及下面的所有内容,不然的话每次启动的时候都会加载这些自带的例子。 4.3、修改WEB-INF/web.xml文件,在默认的情况下中的属性metadata-complete的值为false,也就是这样:,这种情况下,tomcat在启动时会去自动扫描是否有注解及网络碎片,如果你不想tomcat这样做,你可以将metadata-complete的值设为true。 5、并行启动多个应用程序 默认情况下,假设在一个tomcat下你有多个应用,那么启动的时候,这些应用程序都是依次启动的,除非所有应用全部启动完毕,tomcat才会启动完成,但从Tomcat 7.0.23+开始,你可以配置多个应用程序并行启动了!你可以通

Tomcat完整教程

第一章 Tomcat概述 一、Tomcat简介 TOMCAT是APACHE JAKARTA软件组织的一个子项目,TOMCAT是一个JSP/SERVLET容器,它是在SUN公司的JSWDK(JAVA SERVER WEB DEVELOPMENT KIT)基础上发展起来的一个JSP和SERVLET规范的标准实现,使用TOMCAT可以体验JSP和SERVLET的最新规范。经过多年的发展,TOMCAT不仅是JSP和SERVLET规范的标准实现,而且具备了很多商业JAVA SERVLET容器的特性,并被一些企业用于商业用途。 1、Tomcat Tomcat在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行Serlvet/JSP 的Web容器,不过Tomcat也扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat 是一种具有JSP环境的Servlet容器。Servlet容器是代替用户管理和调用Servlet的运行时外壳。 1.1 SERVLET容器 负责处理客户请求。当客户请求来到时,SERVLET容器获取请求,然后调用某个SERVLET,并把SERVLET的执行结果返回给客户。 当客户请求某个资源时,SERVLET容器使用SERVLETREQUEST对象把客户的请求信息封装起来,然后调用JAVA SERVLET API中定义的SERVLET的一些生命周期方法,完成SERVLET的执行,接着把SERVLET执行的要返回给客户的结果封装到SERVLETRESPONSE对象中,最后SERVLET容器把客户的请求发送给客户,完成为客户的一次服务过程。 1.2 TOMCAT的工作模式 1.2.1 独立的SERVLET容器 TOMCAT的默认工作模式,作为独立的SERVLET容器,是内置在WEB服务器中的一部分,是指使用基于JAVA的WEB服务器的情形。 其他两种方式是TOMCAT与其他服务器集成的方式: 1.2.2 进程内的SERVLET容器 SERVLET容器作为WEB服务器的插件和JAVA容器的实现。WEB服务器的插件在内部地址空间打

TOMCAT 开启访问日志功能(ACCESS LOG)

修改位置如下图 具体的解释如下 Access Log Valve用来创建日志文件,格式与标准的web server日志文件相同。可以使用用日志分析工具对日志进行分析,跟踪页面点击次数、用户会话的活动等。Access Log Valve 的很多配置和行为特性与File Logger相同,包括每晚午夜自动切换日志文件。Access Log Valve可以和任何Catalina容器关联,记录该容器处理的所有请求。 例子如下: className 实现的Java类名。必须被设置成 org.apache.catalina.valves.AccessLogValve。 directory 存放日志文件的目录,可以是相对路径或者绝对路径。如果使用相对路径,是指相对于$CATALINA_HOME的路径。如果不指定directory属性,缺省值是“logs”(相对于$CATALINA_HOME) pattern 需要记录的请求/响应不同信息域的格式布局。如果是“common”或者“combine”,说明选择标准格式。下面会有关于配置这个属性的更多信 息。 prefix 日志文件名的前缀。如果没有指定,缺省值是“access_log.”。如果不想使用前缀,使用长度为0的字符串。 resolveHosts 将远端主机的IP地址通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端的IP地址。 suffix 日志文件名的后缀。如果没有指定,缺省值是“”。如果不想使用后缀, 使用长度为0的字符串。 rotatable缺省值为true,用来决定日志是否翻转的标志。如果为false,日志文件

有关tomcat服务器的并发设置与优化

有关tomcat6服务器的并发设置与优化 tomcat的server.xml 配置文件说明: server.xml 配置 参数说明: conn ecti on Timeout 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可 设置为30000毫秒。 keepAliveTimeout 长连接最大保持时间(毫秒)。此处为15秒。 maxKeepAliveRequests 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200 之间) maxHttpHeaderSize http请求头信息的最大程度,超过此长度的部分不予处理。一般8K

URIE ncodi ng 指定Tomcat 容器的URL 编码格式。acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认为10 个。 disableUploadTimeout 上传时是否使用超时机制enableLookups 是否反查域名,取值为:true 或false 。为了提高处理能力,应设置为false maxSpareThreads 最大空闲连接数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的socket 线程The default value is 50. maxThreads 最多同时处理的连接数,Tomcat 使用线程来处理接收的每个请求。这个值表示 Tomcat 可创建的最大的线程数。minSpareThreads 最小空闲线程数,Tomcat 初始化时创建的线程数. minProcessors 最小空闲连接线程数,用于提高系统处理性能,默认值为10 。maxProcessors 最大连接线程数,即:并发处理的最大请求数,默认值为75 提高Tomcat 的并发能力一些方法 1、Apache + Tomcat 结合起来用Apache 负责静态页面,Tomcat 负责动态页面,同时减少connectionTimeout 的时间,以应对并发量大线程回收来不及的情况。 2、压力过大的问题,可以做负载均衡,一个TOMCAT 无论如何也不可能担当如此多的线程负载,而且JVM 过大,其内存管理成本将显著加大。2G 的内存,做3-4 个TOMCAT 实例( 512RAM*4 ),更为科学合理。 3、数据库连接池,不少人,都推荐使用C3P0 ,能提高访问数据库的并发性能好几倍。(有博文称使用tomcat 自带的jdbc-pool 更好,还没试过) 4、采用Tomcat 集群可以最大程度的发挥服务器的性能,可以在配置较高的服务器上部署多个Tomcat ,也可以在多台服务器上分别部署Tomcat ,Apache 和Tomcat 整合的

Tomcat系统日志激活配置方法

Tomcat日志记录激活配置方法 【编写人】:孙福成 【日期】:2010年2月1日 目录 1.文档说明 (1) 2.系统日志激活方式 (1) 2.1.配置方式 (1) 2.2.语法说明 (1) 2.3.参数说明 (2) 2.4.日志样例 (2) 3.日志备份 (2) 4.日志统计................................................................................................. 错误!未定义书签。 1.文档说明 本文档描述Tomcat系统日志记录功能的激活和配置方式,适用于所有使用Tomcat4、5的Web应用。 2.系统日志激活方式 2.1.配置方式 编辑Tomcat/conf/server.xml文件,找到如下行: 增加下面的行: 2.2.语法说明 directory="logs" ----存放日志的目录,请不要修改 prefix="bbs_access_log." ----日志文件名 suffix=".log" ---日志文件扩展名 pattern="%a...." ---日志字段参数

Tomcat6优化

Tomcat6 Optimize 实验条件 数据库服务器 操作系统信息 SYSTEM : Linux flume5 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 GNU/Linux 硬件配置信息 CPU : 4CPU Intel(R) Xeon(R) CPU X5650 @ 2.67GHz Cache size : 12288 KB MEMORY : 4G 数据库服务器信息 MySql版本:Server version: 5.5.24-log MySQL Community Server (GPL) 备注:修改默认MySql服务器连接限制100为1024 应用服务器 操作系统信息 SYSTEM : Linux flume5 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 GNU/Linux 硬件配置信息 CPU : 4CPU Intel(R) Xeon(R) CPU X5650 @ 2.67GHz Cache size : 12288 KB MEMORY : 4G 中间件服务器信息 Tomcat版本:apache-tomcat-6.0.32 备注:系统线程数目没有限制(NPTL内核) 以上数据因为服务器公用原因,并不纯净,但基本能保证内存空闲在2.5G上,CPU使用也足够空闲1内存

1.1概念 Tomcat内存优化其实也就是对JVM内存进行设置 1.2配置位置 配置位置:%TOMCAT_HOME%/bin下, Window:catalina.bat Linux/Unix:catalina.sh 首行添加:JAVA_OPTS=-Xms256m –Xmx256m … 注意:Linux环境下:JAVA_OPTS=”-Xms256m –Xmx256m …”,即参数要加引号,不然不起作用1.3内存参数配置 以下值大部分情况为默认值,应根据具体服务器硬件配置及业务特性来配置 -Xverify:none关闭大部分类验证措施,以缩短虚拟机类加载时间 -Xms16m堆内存初始值(M>1G ? 1G/64 : M/64) -Xmx256m堆内存最大值(M>1G ? 1G/4 : M/4) -Xmn4m新生代初始值(迸发收集器下通过该值来设置,该设置优先级高于-XX:NewRatio)-XX:NewRatio=2 老年代与新生代比值(迸发收集器下默认=7) -XX:SurvivorRatio=8 Eden区与Survivro区的比值 -XX:PermSize=12m永久代初始值 -XX:MaxPermSize=64m永久代最大值 -Xss1024k 栈内存大小 -XX:MaxTenuringThreshold=15由年轻代到年老带的GC阀值(迸发收集器下默认=4) -XX:+UseFastAccessorMethods get,set 方法转成本地代码 1.4垃圾收集器参数配置 响应时间优先(根据CPU数目及应用具体设置,一般需要CPU>4) -XX:+UseParNewGC 设置新生代多线程串行收集器,可以不设置 -XX:+UseConcMarkSweepGC 设置老年代迸发收集器,

tomcat性能优化

一、总结前一天的学习 从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü吞吐量 ü Responsetime ü Cpuload ü MemoryUsage 我们也在第三天的学习中对Apache做过了一定的优化,使其最优化上述4大核心指标的读数,那么我们的Apache调优了,我们的Tomcat也作些相应的调整,当完成今的课程后,到时你的“小猫”到时真的会“飞”起来的,所以请用心看完,这篇文章一方面用来向那位曾写过“Tomcat如何承受1000个用户”的作都的敬,一方面又是这篇原文的一个扩展,因为在把原文的知识用到相关的两个大工程中去后解决了: 1) 承受更大并发用户数 2) 取得了良好的性能与改善(系统平均性能提升达20倍,极端一个交易达80倍)。 另外值的一提的是,我们当时工程里用的“小猫”是跑在32位机下的,也就是我们的JVM 最大受到2GB存的限制,都已经跑成“飞”了。。。。。。如果在64位机下跑这头“小猫”。。。。。。大家可想而知,会得到什么样的效果呢?下面就请请详细的设置吧! 二、一切基于JVM(存)的优化 2.1 32位操作系统与64位操作系统中JVM的对比 我们一般的开发人员,基本用的是都是32位的Windows系统,这就导致了一个严重的问题即:32位windows系统对存限制,下面先来看一个比较的表格: Winxp32 4GB 超级兔子 Win732 4GB 可以通过设置/PAE Win200332 可以突破4GB达16GB 必需要装win2003 advanced server且要打上sp2补丁Win764 无限制机器能插多少存,系统存就能支持到多大 Win200364 无限制机器能插多少存,系统存就能支持到多大

Eclipse之tomcat插件发布应用使用说明

Eclipse之tomcat插件应用发布操作说明 软件环境: 1)Eclipse4.3 2)Tomcat5.5.26 3)Tomcat插件3.3.0 下面的步骤是假定你已经安装好Eclipse的tomcat插件,然后在eclipse上发布应用: 1、打开“Window-->Preferences-->Tomcat”,如下图: 在tomcat version中,选择你使用的tomcat版本,这里的选择5.x。 在tomcat home中,选择tomcat的路径 在context declaration mode中,有两个选项:Server.xml和Context files。选择Server.xml 项,激活Configuration file输入框,选择Context files项,激活Context directory输入框。 这两项可以选择任何一个,有什么不同呢? ●选择Server.xml项,将会把项目的发布信息增加到tomcat目录下conf/server.xml 文件中。 ●选择Context files项,项目的发布信息独立写成一文件,放在conf/Catalina/localhost 目录中。 2、在“tomcat-->Advanced”中,tomcat base选择你tomcat所在的目录。

3、在“tomcat-->JVM Setting”中,你可以选择你的JRE版本。 其他的Source Path和Tomcat Managet App采用默认的设置,不需要做配置,完成之后,选

择OK,保存配置。 4、选中你要发布的项目,右键选择“属性-->tomcat”,如下图: 选上Is a Tomcat Project 上下文名可根据你的需要来填写,这个是访问应用的上下文,在这里是/mp,届时访问应用就是http://IP:port/mp。 其他选项可根据实际来配置,配置完成之后,点击OK。 5、启动tomcat,可以看到成功启动的信息,如下图:

Tomcat面试题汇总及答案

Tomcat面试题汇总及答案 一、Tomcat 的缺省端口是多少,怎么修改? 1)找到 Tomcat 目录下的 conf 文件夹 2)进入 conf 文件夹里面找到 server.xml 文件 3)打开 server.xml 文件 4)在 server.xml 文件里面找到下列信息 port="8080"改成你想要的端口 二、tomcat 有哪几种 Connector 运行模式(优化)? bio:传统的 Java I/O 操作,同步且阻塞 IO。maxThreads=”150”//Tomcat 使用线程来处理接收的每个请求。这个值表示 Tomcat 可创建的最大的线程数。默认值 200。可以根据机器的时期性能和内存大小调整,一般可以在 400-500。最大可以在 800 左右。 minSpareThreads=”25”—Tomcat 初始化时创建的线程数。默认值 4。如果当前没有空闲线程,且没有超过 maxThreads,一次性创建的空闲线程数量。 Tomcat 初始化时创建的线程数量也由此值设置。maxSpareThreads=”75”–一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程。默认值 50。一旦创建的线程超过此数值,Tomcat 会关闭不再需要的线程。线程数可以大致上用“同时在线人数每秒用户操作次数系统平均操作时间”来计算。 acceptCount=”100”—-指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值 10。如果当前可用线程数为 0,则将请求放入处理队列中。这个值限定了请求队列的大小,超过这个数值的请求将不予处理。connectionTimeout=”20000”–网络连接超时,默认值 20000,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。 nio:JDK1.4 开始支持,同步阻塞或同步非阻塞 IO。指定使用 NIO 模型来接受 HTTP 请求 protocol=”org.apache.coyote.http11.Http11NioProtocol”指定使用 NIO 模型来接受HTTP 请求。默认是BlockingIO,配置为protocol=”HTTP/1.1”acceptorThreadCount=”2”使用 NIO 模型时接收线程的数目

TomcatWeb服务器安全配置基线

Tomcat Web服务器安全配置基线 中国移动通信有限公司管理信息系统部 2012年 04月

备注: 1.若此文档需要日后更新,请创建人填写版本控制表格,否则删除版本控制表格。

目录 第1章概述 (4) 1.1目的 (4) 1.2适用范围 (4) 1.3适用版本 (4) 1.4实施 (4) 1.5例外条款 (4) 第2章帐号管理、认证授权 (5) 2.1帐号 (5) 2.1.1共享帐号管理* (5) 2.1.2无关帐号管理* (5) 2.2口令 (6) 2.2.1密码复杂度 (6) 2.2.2密码生存期 (7) 2.3授权 (7) 2.3.1用户权利指派* (7) 第3章日志配置操作 (9) 3.1日志配置 (9) 3.1.1审核登录 (9) 第4章IP协议安全配置 (10) 4.1IP协议 (10) 4.1.1支持加密协议* (10) 第5章设备其他配置操作 (11) 5.1安全管理 (11) 5.1.1定时登出 (11) 5.1.2错误页面处理 (11) 5.1.3目录列表访问限制 (12) 第6章评审与修订 (14)

第1章概述 1.1 目的 本文档规定了中国移动通信有限公司管理信息系统部门所维护管理的Tomcat WEB服务器应当遵循的安全性设置标准,本文档旨在指导系统管理人员进行Tomcat WEB服务器的安全配置。 1.2 适用范围 本配置标准的使用者包括:服务器系统管理员、应用管理员、网络安全管理员。 本配置标准适用的范围包括:支持中国移动集团公司管理信息系统部运行的Tomcat Web 服务器系统。 1.3 适用版本 4.x、 5.x、 6.x版本的Tomcat Web服务器。 1.4 实施 本标准的解释权和修改权属于中国移动集团管理信息系统部,在本标准的执行过程中若有任何疑问或建议,应及时反馈。 本标准发布之日起生效。 1.5 例外条款 欲申请本标准的例外条款,申请人必须准备书面申请文件,说明业务需求和原因,送交中国移动通信有限公司管理信息系统部进行审批备案。

性能分析与调优的原理及原则

性能分析与调优的原理 最近一直纠结性能分析与调优如何下手,先从硬件开始,还是先从代码或数据库。从操作系统(CPU调度,内存管理,进程调度,磁盘I/O)、网络、协议(HTTP,TCP/IP),还是从应用程序代码,数据库调优,中间件配置等方面入手。 单一个中间件又分web中间件(apache、IIS),应用中间件(tomcat、weblogic、webSphere)等,虽然都是中间件,每一样拎出来往深了学都不是一朝一夕之功。但调优对于每一项的要求又不仅仅是“知道”或“会使用”这么简单。起码要达到“如何更好的使用”。 常看到性能测试书中说,性能测试不单单是性能测试工程师一个人的事儿。需要DBA 、开发人员、运维人员的配合完成。但是在不少情况下性能测试是由性能测试人员独立完成的,退一步就算由其它人员的协助,了解系统架构的各个模块对于自身的提高也有很大帮助,同进也更能得到别人的尊重。 再说性能调优之前,我们有必要再提一下进行测试的目的,或者我们进行性能测试的初衷是什么? 能力验证:验证某系统在一定条件具有什么样的能力。 能力规划:如何使系统达到我们要求的性能能力。 应用程序诊断:比如内存泄漏,通过功能测试很难发现,但通过性能测试却很容易发现。 性能调优:满足用户需求,进一步进行系统分析找出瓶颈,优化瓶颈,提高系统整体性能。 一、一般系统的瓶颈 性能测试调优需要先发现瓶颈,那么系统一般会存在哪些瓶颈: 1、硬件上的性能瓶颈:

一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL 语句、数据库设计、业务逻辑、算法等)。 2、应用软件上的性能瓶颈: 一般指的是应用服务器、web 服务器等应用软件,还包括数据库系统。 例如:中间件weblogic 平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。 3、应用程序上的性能瓶颈: 一般指的是开发人员新开发出来的应用程序。 例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够),造成系统在大量用户方位时性能低下而造成的瓶颈。 4、操作系统上的性能瓶颈: 一般指的是windows、UNIX、Linux等操作系统。 例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。 5、网络设备上的性能瓶颈: 一般指的是防火墙、动态负载均衡器、交换机等设备。 例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。 性能测试出现的原因及其定位十分复杂,这里只是简单介绍常见的几种瓶颈类型和特征,而性能测试所需要做的就是根据各种情况因素综合考虑,然后协助开发人员/DBA/运维人员一起定位性能瓶颈。 二、一般性能调优步骤 一般性能问题调优的步骤: 1、步骤一:确定问题 应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。

相关文档
最新文档