Tomcat生产环境配置优化集合
Tomcat性能调优方案
Tomcat性能调优方案一、操作系统调优对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高cpu的频率,保证文件系统的读写速率等。
经过压力测试验证,在并发连接很多的情况下,cpu的处理能力越强,系统运行速度越快。
【适用场景】任何项目。
二、java虚拟机调优必须挑选sun的jvm,在满足用户项目须要的前提下,尽量采用版本较低的jvm,一般来说低版本产品在速度和效率上比低版本可以存有改良。
jdk1.4比jdk1.3性能提升将近10%-20%,jdk1.5比jdk1.4性能提升25%-75%。
因此对性能建议较低的情况所推荐采用jdk1.6。
【适用于场景】任何项目。
三、apache内置tomcat如果一个项目中大量使用了静态页面、大量的图片等,并有有较大的访问量,推荐使用apache集成tomcat的方式来提高系统的整体性能。
相对于jk的相连接方式,后两种在布局上比较简单的,灵活性方面也一点都不逊色。
但就稳定性而言不像是jk这样久经考验,所以建议使用jk的相连接方式。
apache+jk+tomcat布局:1.安装apache服务器2.部署tomcat【适用于场景】大量采用静态页面的应用领域系统。
四、apache和tomcat集群方式,这种方式比较灵活,成本相对比较低,另外一个很大的优点就是可以根据应用情况和服务器的情况做一些灵活的配置。
所以推荐使用apache+tomcat集群来实现负载均衡。
使用tomcat集群可以最小程度的充分发挥服务器的性能,可以在布局较低的服务器上部署多个tomcat,也可以在多台服务器上分别部署tomcat,apache和tomcat资源整合的方式还是jk方式。
经过检验,系统对小用户量采用的积极响应方面,apache+3tomccat集群>apache+2tomcat集群>apache内置tomcat>单个tomcat。
并且使用apache+多tomcat集群的部署方式时,如果一个tomcat发生宕机,系统可以稳步采用,所以在硬件系统性能足够多得天独厚的情况下,须要尽量充分发挥软件的性能,可以使用减少tomcat 集群的方式。
Tomcat的常用设置及优化
Tomcat的常用设置及优化当我们公司使用tomcat作为web应用服务器的规模越来越大,为保证T omcat配置安全,防止信息泄露,恶意攻击以及配置的安全规范,特制定此T omcat安全配置规范。
1|1Tomcat用户设置useradd -d /tomcat -u 501 tomcatecho "123" |passwd --stdin tomcatsu - tomcatid tomcat# uid=501(tomcat) gid=1000(tomcat) groups=1000(tomcat) pwd# /tomcat1|2Tomcat配置wgethttps:///apache/tomcat/tomcat-8/v8.5.55/bin/apache-tomcat-8.5.55.tar.gztail -5 .bash_profileJAVA_HOME=/usr/local/jdkexport PATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CATALINA_HOME=/usr/local/tomcat1|3应用程序配置mkdir webappstar xvf apache-tomcat-8.5.55.tar.gz -C /tomcat/webapps//tomcat/webapps/apache-tomcat-8.5.55/bin/startup.sh2|0安全设置规范2|1telnet管理端口保护(强制)2|2ajp链接端口保护(推荐)2|3禁用管理端(强制)tomcat/webapps/*tomcat/conf/tomcat-user.xml 2|4降权启动(强制)2|5文件列表访问控制(强制)2|6版本信息隐藏(强制)2|7Server header重写(推荐)2|8访问限制(可选)2|9起停脚本权限回收(推荐)chmod 744–R tomcat/bin/* 2|10访问日志格式规范(推荐)2|11屏蔽DNS查询enableLookups: 调用request,getRemoteHost()执行DNS查询,以返回远程主机的主机名,如果设置为false,<Connector enableLookups="false"/>2|12压缩管理tomcat作为一个应用服务器,也是支持gzip 压缩功能的。
Tomcat 的内存配置及优化
Tomcat 的内存配置及优化Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java 虚拟机。
你能选择自己的需要选择不同的操作系统和对应的JDK的版本(只要是符合Sun 发布的Java规范的),但我们推荐你使用Sun公司发布的JDK。
确保你所使用的版本是最新的,因为Sun公司和其他一些公司一直在为提高性能而对java虚拟机做一些升级改进。
一些报告显示JDK1.4在性能上比JDK1.3提高了将近10%到20%。
能给Java虚拟机设置使用的内存,不过如果你的选择不对的话,虚拟机不会补偿。
可通过命令行的方式改动虚拟机使用内存的大小。
如下表所示有两个参数用来设置虚拟机使用内存的大小。
参数描述-XmsJVM初始化堆的大小-XmxJVM堆的最大值这两个值的大小一般根据需要进行设置。
初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。
一般而言,这个参数不重要。
不过有的应用程式在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来满足使用。
由于这种原因,我们一般把-Xms和-Xmx设为相同大,而堆的最大值受限于系统使用的物理内存。
一般使用数据量较大的应用程式会使用持久对象,内存使用有可能迅速地增长。
当应用程式需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。
因此一般建议堆的最大值设置为可用内存的最大值的80%。
Tomcat默认能使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
视窗系统下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置:JAVA_OPTS=’-Xms【初始化内存大小】-Xmx【能使用的最大内存】’需要把这个两个参数值调大。
例如:JAVA_OPTS=’-Xms256m -Xmx512m’表示初始化内存为256MB,能使用的最大内存为512MB。
tomcat常用的调优参数
tomcat常用的调优参数Tomcat常用的调优参数Tomcat是一个开源的Java Servlet容器,广泛应用于Java Web 应用程序的部署和运行。
为了提高Tomcat的性能和稳定性,我们可以通过调优参数来优化其配置。
本文将介绍一些常用的Tomcat 调优参数,帮助您更好地配置和优化T omcat服务器。
1. 内存设置- -Xms: 设置JVM的初始堆大小,建议设置为物理内存的1/4或1/3。
- -Xmx: 设置JVM的最大堆大小,建议设置为物理内存的1/2或2/3。
- -XX:MaxPermSize: 设置JVM的永久代大小,建议设置为256MB或512MB。
- -XX:MaxMetaspaceSize: 设置JVM的元空间大小,建议设置为256MB或512MB。
2. 线程设置- maxThreads: 设置Tomcat的最大线程数,建议根据服务器的硬件配置和并发请求数进行调整。
- acceptCount: 设置Tomcat接受请求的队列大小,建议设置为200或300。
- connectionTimeout: 设置Tomcat的连接超时时间,建议设置为30秒或60秒。
3. 连接器设置- protocol: 设置连接器的协议,常用的有HTTP/1.1和AJP/1.3。
- port: 设置连接器的监听端口,建议使用80端口作为HTTP连接器的默认端口。
- maxKeepAliveRequests: 设置每个Keep-Alive连接的最大请求数,建议设置为100或200。
- keepAliveTimeout: 设置Keep-Alive连接的超时时间,建议设置为5秒或10秒。
4. 缓存设置- cacheSize: 设置Tomcat的静态文件缓存大小,建议根据静态文件的数量和大小进行调整。
- cacheTTL: 设置静态文件缓存的过期时间,建议设置为1小时或更长。
- cacheObjectMaxSize: 设置缓存对象的最大大小,建议根据缓存对象的平均大小进行调整。
TOMCAT服务器中的性能优化
TOMCAT服务器中的性能优化Tomcat是一款开源的Java Servlet容器,广泛应用于企业级Web应用程序的开发和运行。
由于其使用方便、可灵活配置的优点,被越来越多的开发者所喜爱,并成为了Java Web开发的重要组成部分。
然而,Tomcat服务器在高并发的情况下可能会出现性能问题,影响Web应用程序的正常运行。
因此,本文将介绍Tomcat服务器中的性能优化方法,帮助开发者更好地优化自己的Web应用程序。
一、Tomcat的架构在进行Tomcat服务器的性能优化前,我们需要了解其架构。
Tomcat服务器的架构主要包括以下几个组件:1. Servlet容器:负责处理HTTP请求和响应,并将它们转发给相应的Servlet。
2. 连接器:负责与客户端建立TCP连接、处理协议和编解码等任务。
3. Engine:Tomcat服务器的核心组件,负责管理虚拟主机、容器和线程池等资源。
4. Host:虚拟主机,负责处理来自特定主机的请求,并将请求转发给相应的Context。
5. Context:Web应用程序的执行环境,包括Servlet、JSP和静态文件等资源。
6. Valve:过滤器,可以拦截请求和响应,并在它们到达目的地之前对它们进行处理。
了解Tomcat服务器的架构有助于我们更好地理解性能优化的方法和原理。
二、基础优化在进行高级优化前,我们需要进行一些基础优化,以确保Tomcat服务器的最大性能。
1. 使用最新版本的Java和Tomcat:Java的性能和稳定性在不断提高,因此使用最新版本的Java和Tomcat可以提高服务器的性能和稳定性。
2. 调整Tomcat配置参数:Tomcat服务器的性能受到其配置参数的影响,因此调整Tomcat的配置参数可以提高服务器的性能。
可以通过更改server.xml文件来修改Tomcat参数。
调整参数时需要注意保持平衡,避免调整一个参数而使其他参数受到负面影响。
Tomcat配置优化
Tomcat配置优化⼀、tomcat内存优化打开bin下catalina.bat⽂件在⽂件的第⼀处⾮注释⾏出添加1 set JAVA_OPTS=-server -Xms2g -Xmx2g -Xss256k参数含义:-server:以server模式运⾏java程序-Xms:初始化堆内存⼤⼩-Xmx:堆内存最⼤容量-Xss:设定每个线程的堆栈⼤⼩ JDK9之前ParallelGC作为默认垃圾回收器,优化配置JVM需要设置⼤量参数,诸如-XX:NewRatio、-XX:SurvivorRatio等等,但随着JDK不断更迭,繁琐的参数已经不再需要且不再⽀持。
JDK9开始,G1作为默认的垃圾回收器,G1GC 不必明确设置新⽣代⼤⼩,其⾃动调优也⼗分可靠,对于停顿时间往往在长时间运⾏后可以达到预期效果。
不建议进⾏过多的配置。
⼆、tomcat线程池优化打开conf下server.xml全局搜索executor,在注释中可以找到,同节点位置添加:1<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" deamon="true"2 minSpareThreads="100" maxSpareThreads="300" maxThreads="600"3maxQueueSize="1000000" maxIdleTime="60000"4 prestartminSpareThreads="true"/>然后搜索Connector,找到tomcat的http连接器,添加连接器与线程池关联1<Connector port="8080" protocol="HTTP/1.1"2 connectionTimeout="20000"3 redirectPort="8443"4 executor="tomcatThreadPool"/>参数含义:namePrefix:线程池中线程的命名前缀。
tomcat 调优总结
tomcat 调优总结1.增加内存:可以通过修改Tomcat的启动参数来增加JVM的内存限制,从而提高Tomcat的性能。
例如:将-Xms和-Xmx修改为较大的值,如-Xms1024m和-Xmx2048m。
2. 调整线程池:Tomcat默认使用的线程池为org.apache.tomcat.util.threads.ThreadPoolExecutor,可以根据实际情况来调整线程池的大小,以提高Tomcat的并发处理能力。
3. 使用NIO:Tomcat 7及以上版本支持使用Java NIO来提高网络I/O性能。
可以通过修改server.xml文件中的Connector配置来启用NIO。
4. 压缩响应数据:对于一些需要传输大量数据的请求(如文件下载),可以启用Tomcat的压缩功能,减少数据传输量,从而提高响应速度。
5. 避免频繁GC:可以通过调整JVM的垃圾回收策略来减少频繁的GC操作,从而提高Tomcat的性能。
例如:将JVM的垃圾回收算法修改为G1。
6. 启用HTTP/2:Tomcat 9及以上版本支持使用HTTP/2协议来提高网络传输效率。
可以通过修改server.xml文件中的Connector 配置来启用HTTP/2。
7. 使用静态资源缓存:对于一些静态资源(如图片、JS、CSS 等),可以启用Tomcat的缓存功能,减少频繁的网络请求,从而提高响应速度。
8. 减少Session使用:Session的使用会占用服务器的资源,导致Tomcat的性能下降。
可以减少Session的使用,或者使用分布式Session来减轻服务器的压力。
9. 使用反向代理:将Tomcat作为反向代理服务器,可以将一些静态资源直接转发到其他服务器上,减少Tomcat的负载,提高性能。
10. 使用CDN加速:使用CDN可以将一些静态资源缓存到CDN 节点上,从而减少服务器的负载,提高Tomcat的性能。
Tomcat部署优化
Tomcat的优化1、内存使用配置Tomcat是依赖于JVM的,所以Tomcat的使用内存配置实质上是JVM的内存配置在/bin目录下的catalina.bat可以直接通过Tomcat设置JVM内存参数,windows下打开catalina.bat文件,在大概中间的位置,找到set "JAVA_OPTS=%JAVA_OPT% -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true"通过内存设置充分利用服务器内存-server:模式启动应用慢,但是极大程度提高运行性能-Xms2048m -Xmx2048m:设置的是堆内存java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有ng.OutOfMemoryError:PermGen space,可以不设置Headless=true:适用于Linux系统,与图形操作有关,如生成验证码含义是当前的是无显示器的服务器,应用中如果获取系统显示有关的参数会抛出异常,windows系统可不用设置可通过jmap -heap process_id查看设置是否成功2、最大连接数配置(并发能力)在/conf/server.xml里进行配置在<Connector>属性中将protocol属性改为"org.apache.coyote.http11.Http11NioProtocol",NIO模型的效率更高加入maxThreads="500" //当前可以同时处理的最大用户访问数minSpareThreads="100" //最小空闲线程连接数,用于优化线程池maxSpareThreads="200"acceptCount="200" //当所有的线程以分配,仍然允许连接进来,但是出于等待状态的用户数。
tomcat常用的调优参数
tomcat常用的调优参数调优Tomcat 的性能可以通过调整一些参数来提升其运行效率和吞吐量。
以下是一些常用的Tomcat 调优参数:1. 内存设置:- `-Xms`:设置JVM 初始堆内存大小。
- `-Xmx`:设置JVM 最大堆内存大小。
-`-XX:MaxPermSize`(适用于Java 7 之前的版本):设置JVM 持久代(PermGen)的最大大小。
2. 线程池设置:- `maxThreads`:在`<Connector>` 元素中设置最大线程数。
- `acceptCount`:在`<Connector>` 元素中设置等待队列的最大大小。
3. 垃圾回收(GC)设置:- `-XX:+UseConcMarkSweepGC`:使用并发标记清除(CMS)垃圾收集器。
- `-XX:+CMSParallelRemarkEnabled`:启用CMS 垃圾收集器的并行标记阶段。
- `-XX:+UseParNewGC`:使用ParNew 垃圾收集器与CMS 进行协作。
4. 连接器设置:- `connectionTimeout`:在`<Connector>` 元素中设置连接超时时间。
- `keepAliveTimeout`:在`<Connector>` 元素中设置Keep-Alive 连接的超时时间。
5. 静态资源缓存:- `<Context>` 元素中的`cachingAllowed` 和`cacheMaxSize`:启用静态资源缓存,并设置最大缓存大小。
6. 请求处理:-`<Connector>` 元素中的`maxKeepAliveRequests`:设置每个Keep-Alive 连接允许的最大请求数量。
以上只是一些常见的调优参数示例,具体的参数设置和效果可能取决于你的应用程序和环境。
建议在调优前备份配置文件,并根据具体的需求和实际情况进行调整。
tomcat性能优化参数
tomcat性能优化参数线上环境使⽤默认tomcat配置⽂件,性能很⼀般,为了满⾜⼤量⽤户的访问,需要对tomcat进⾏参数性能优化,具体优化的地⽅如下:Linux内核的优化服务器资源JVM 配置的优化Tomcat参数优化Tomcat配置连接器配置负载集群优化这⾥着重讲解tomcat参数的优化:server.xml⽂件,关闭DNS查询、配置最⼤并发等参数。
maxThreads:tomcat起动的最⼤线程数,即同时处理的任务个数,默认值为200acceptCount:当tomcat起动的线程数达到最⼤时,接受排队的请求个数,默认值为100当然这些值都不是越⼤越好,需要根据实际情况来设定。
可以基于测试的基础上来不断的调优分析。
1,vim /usr/local/tomcat/conf/server.xml 优化http 8080访问端⼝段加⼊以下优化,再把默认的删掉真实企业也是⼀下的参数不变<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"redirectPort="8443"maxThreads="5000"minSpareThreads="20"acceptCount="1000"disableUploadTimeout="true"enableLookups="false"URIEncoding="UTF-8" />2,Catalina.sh JVM 参数优化,java系统内存优化,根据⾃⼰虚拟机得内存来优化⼀下XmsXmx Xmn的参数这⾥配置的内存不要太⼤⼀般位置系统内存的3/1 真实企业系统内存最低要留2个G 其中Xmn为Xmx内存的4/1如果不配置优化jvm tomcat默认是502参数添加位置如下:其中参数⼀般有开发⼈员来配置算出最优值添加如下内容:vim /usr/local/tomcat/bin/ catalina.shCATALINA_OPTS="$CATALINA_OPTS –Xms1024M –Xmx1024M –Xmn512M -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=82 -DLOCALE=UTF-16LE -DRAMDISK=/ -DUSE_RAM_DISK=ture -DRAM_DISK=true3,优化server.conf配置⽂件<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" //最⼤并发数,默认设置 200,⼀般建议在 500 ~ 800,根据硬件设施和业务来判断minSpareThreads="100" //Tomcat 初始化时创建的线程数,默认设置 25prestartminSpareThreads = "true"//在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就⽆效maxQueueSize = "100"//最⼤的等待队列数,超过则拒绝请求 /><Connector executor="tomcatThreadPool" port="8080"protocol="org.apache.coyote.http11.Http11Nio2Protocol" //Tomcat 8 设置 nio2 更好,Tomcat 6 、7设置nio更好:org.apache.coyote.http11.Http11NioProtocolconnectionTimeout="20000"minSpareThreads="100" maxSpareThreads="1000"最⼤处理连接数线程minProcessors="100“同时处理请求的最⼩数maxProcessors=“1000”同时处理请求的最⼤数maxConnections="1000" redirectPort="8443"enableLookups="false" //禁⽤DNS查询 acceptCount="100" //指定当所有可以使⽤的处理请求的线程数都被使⽤时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100maxPostSize="10485760" //以 FORM URL 参数⽅式的 POST 提交⽅式,限制提交最⼤的⼤⼩,默认是2097152(2兆),它使⽤的单位是字节。
Tomcat配置优化(完整版)
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,减少网络流量<Connector port="8080" protocol="HTTP/1.1" acceptCount="100" maxThreads="500" minSpareThreads="25" maxSpareThreads="75" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"connectionTimeout="20000"redirectPort="8443" />二、TOMCAT性能参数调优环境:Windows2003、jdk1.6以上、tomcat6.0以上设置tomcat的java虚拟机参数catalina.sh/batJA V A_OPTS="$JA V 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、线程、压缩传输参数<Connector port="8080" protocol="HTTP/1.1" acceptCount="100" maxThreads="500" minSpareThreads="25" maxSpareThreads="75" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"connectionTimeout="20000"redirectPort="8443" />设置tomcat数据库连接池参数context.xml设置数据库连接池<?xml version='1.0' encoding='utf-8'?><Context><Resourcename="jdbc/b2b"type="javax.sql.DataSource"auth="Container"url="jdbc:oracle:thin:@localhost:1521:b2b"driverClassName="oracle.jdbc.driver.OracleDriver"username="b2b"password="b2b "maxActive="150"maxIdle="30"maxWait="5000"/></Context>设置操作系统tcpip参数,regedit/修改windows的tcpip参数Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "Tcp1323Opts"=dword:00000003"TcpWindowSize"=dword:0003e640"TcpTimedWaitDelay"=dword:0000001e"TcpNumConnections"=dword:00002710"MaxUserPort"=dword:0000ffff三、解决rar、excel格式文件在下载时直接以乱码打开打开$tomcat_home\conf 目录下的WEB.XML文件找到<mime-mapping> 配置位置,并添加以下配置:<mime-mapping><extension>rar</extension><mime-type>application/octet-stream</mime-type></mime-mapping><mime-mapping><extension>xls</extension><mime-type>application/octet-stream</mime-type></mime-mapping><mime-mapping><extension>txt</extension><mime-type>application/octet-stream</mime-type></mime-mapping>新增后,保存,并重启tomcat生效。
tomcat6优化配置
tomcat6优化配置每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换。
而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受Socket,而由线程池来处理堵塞在pipe或者队列里的请求.这样的话,只要OS可以接受TCP的连接,web服务器就可以处理该请求。
大大提高了web服务器的可伸缩性。
大家都听说了在Apache Tomcat6 中支持了Java语言的特性 NIO( NewI/O),不管你对NIO的技术是否熟悉,但你肯定能想象的到NIO是一个好东西。
的确,使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的性能。
请注意:很抱歉,在tomcat6在默认的配置选项中是没有把NIO功能打开。
所以很多正在使用Tomcat6的朋友们本以为能快活的使用上NIO。
不信,你可以试试,从Apache Tomcat 站点下载的Tomct6 压缩包中conf/server.xml的配置文件第69 行,内容如下:<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />进行测试,可以在控制台的启动信息里看见,默认状态下没有被打开nio 配置,启动时的信息,如下:2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init信息: Initializing Coyote HTTP/1.1 on http-80802010-2-1 12:59:40 org.apache.catalina.startup.Catalina load修改成支持NIO的类型,配置如下:<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol " connectionTimeout="20000"redirectPort="8443" />进行测试,被打开nio配置,启动时的信息,如下:2010-2-1 13:01:01 .NioSelectorPool getSharedSelector信息: Using a shared selector for servlet write/read2010-2-1 13:01:01 org.apache.coyote.http11.Http11NioProtocol init信息: Initializing Coyote HTTP/1.1 on http-8080这样才能让你真正体验到Tomcat6下NIO给你的系统带来的快感。
Tomcat性能优化
Tomcat性能优化默认参数不适合生产环境使用,因此需要修改一些参数1、修改启动时内存参数、并指定JVM时区(在windows server 2008 下时间少了8个小时):在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数:window下,在catalina.bat最前面:set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m-Xmx1024m;-Duser.timezone=GMT+08;一定加在catalina.bat最前面。
linux下,在catalina.sh最前面增加:JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m-Duser.timezone=Asia/Shanghai"注意:前后二者区别,有无set,有无双引号。
2、线程池配置(Tomcat6下)使用线程池,用较少的线程处理较多的访问,可以提高tomcat处理请求的能力。
使用方式:首先。
打开/conf/server.xml,增加<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。
然后,修改<Connector ...>节点,增加executor属性,如:<Connector executor="tomcatThreadPool"port="80"protocol="HTTP/1.1"maxThreads="600"minSpareThreads="100"maxSpareThreads="300"connectionTimeout="60000"keepAliveTimeout="15000"maxKeepAliveRequests="1"redirectPort="443"....../>maxThreads:Tomcat可创建的最大的线程数,每一个线程处理一个请求;minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数;maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程;acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,就是被排队的请求数,超过这个数的请求将拒绝连接。
tomcat性能调优方案
tomcat性能调优方案在开发和部署Web应用程序时,Tomcat是一款广泛使用的Java Servlet容器。
然而,随着业务的增长和用户量的上升,Tomcat性能问题可能会成为一个挑战。
为了确保应用程序的高效运行,我们需要采取一些性能调优措施。
本文将介绍一些Tomcat性能调优方案,以提高应用程序的性能和响应速度。
一、优化Tomcat服务器配置1. 调整内存参数:通过修改Tomcat的启动脚本‘catalina.sh’(Linux)或‘catalina.bat’(Windows),可以配置JVM的内存参数。
可以增加-Xms和-Xmx参数来增加JVM的初始堆大小和最大堆大小。
适当调整这些参数可以提高应用程序的内存管理效率,从而提高性能。
2. 调整连接器配置:Tomcat使用连接器来处理HTTP请求,可以通过调整连接器的配置参数来提高性能。
例如,调整maxThreads参数来增加同时处理请求的线程数,增加acceptCount参数来增加等待处理的请求队列长度,以及调整keepAliveTimeout参数来控制HTTP连接的持久化时间等。
二、优化应用程序代码1. 减少HTTP请求:每次HTTP请求都会消耗系统资源,并且增加网络延迟。
通过优化应用程序代码,减少不必要的HTTP请求可以提高性能。
例如,可以使用CSS sprites来减少图片加载请求,合并和压缩JavaScript和CSS文件来减少文件加载请求等。
2. 使用缓存:合理使用缓存机制可以减少对数据库和其他资源的请求次数,提高应用程序的性能。
例如,可以使用缓存技术来缓存数据库查询结果、页面片段或整个页面,以减少对数据库和服务器的访问次数。
3. 避免同步阻塞:多线程并发请求可能会导致同步阻塞,影响应用程序的性能。
通过合理使用同步机制和锁机制,避免同步阻塞可以提高性能。
例如,使用线程池来管理并发请求的线程,使用并发集合类来替代同步集合类等。
三、数据库优化1. 数据库索引优化:在使用数据库时,合理的索引设计可以大大提高查询性能。
Tomcat优化配置
Tomcat优化配置一.Tomcat内存优化T omcat内存优化主要是对tomcat启动参数优化,我们可以在tomcat的启动脚本catalina.sh中设置JAVA_OPTS参数。
1.JAVA_OPTS参数说明Java代码1.-server 启用jdk 的 server 版;2.-Xms java虚拟机初始化时的最小内存;3.-Xmx java虚拟机可使用的最大内存;4.-XX:PermSize 内存永久保留区域5.-XX:MaxPermSize 内存最大永久保留区域服务器参数配置现公司服务器内存一般都可以加到最大2G,所以可以采取以下配置:Java代码1.JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'配置完成后可重启T omcat,通过以下命令进行查看配置是否生效:1. 首先查看Tomcat进程号:Xml代码1.sudo lsof -i:9027我们可以看到Tomcat进程号是12222。
1. 查看是否配置生效:Xml代码1.sudo jmap – heap 12222我们可以看到MaxHeapSize等参数已经生效。
、二.T omcat并发优化1.Tomcat连接相关参数在Tomcat配置文件server.xml中的配置中1.参数说明minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 enableLookups:是否反查域名,取值为:true或false。
为了提高处理能力,应设置为false connectionTimeout:网络连接超时,单位:毫秒。
tomcat常用配置详解和优化方法
tomcat常⽤配置详解和优化⽅法tomcat常⽤配置详解和优化⽅法参考:/zj52hm/article/details/51980194/wuliu_forever/article/details/52607177https:///dengyungao/p/7542604.htmlhttps:///ysocean/p/6893446.html#_label1常⽤配置详解1 ⽬录结构/bin:脚本⽂件⽬录。
/common/lib:存放所有web项⽬都可以访问的公共jar包(使⽤Common类加载器加载)。
/conf:存放配置⽂件,最重要的是server.xml。
/logs:存放⽇志⽂件。
/server/webapps:来管理Tomcat-web服务⽤的。
仅对TOMCAT可见,对所有的WEB APP都不可见(使⽤Catalina类加载器加载)。
/shared/lib:仅对所有WEB APP可见,对TOMCAT不可见(使⽤Shared类加载器加载)。
/temp:Tomcat运⾏时候存放临时⽂件⽤的。
/webapps:web应⽤发布⽬录。
/work:Tomcat把各种由jsp⽣成的servlet⽂件放在这个⽬录下。
删除后,启动时会⾃动创建。
2 配置⽂件server.xml:主要的配置⽂件。
web.xml:缺省的web app配置,WEB-INF/web.xml会覆盖该配置。
context.xml:不清楚跟server.xml⾥⾯的context是否有关系。
server.xml配置server标签port:指定⼀个端⼝,这个端⼝负责监听关闭tomcat的请求。
shutdown:指定向端⼝发送的命令字符串。
service标签name:指定service的名字。
Connector(表⽰客户端和service之间的连接)标签port:指定服务器端要创建的端⼝号,并在这个端⼝监听来⾃客户端的请求。
minProcessors:服务器启动时创建的处理请求的线程数。
Tomcat部署及优化经验分享
• • •
-Xmx java虚拟机可使用的最大内存;
•
•
-XX:PermSize
内存永久保留区域
-XX:MaxPermSize 内存最大永久保留区域
具体可以参考这篇文档:关键业务系统的JVM启动参数推荐
连接器参数调整
在Tomcat 配置文件 server.xml 中的 <Connector ... /> 配置中 进行连接器参数的优化
BIO NIO APR
使用SSL链接
HTTPS - 依靠证书来验证服务器的身份,并为浏览器和服 务器之间的通信加密 缺陷: • 证书需要购买(自建证书浏览器报错) • 增加服务器的负担
集群化方案
在性能瓶颈出现在Tomcat上时,可使用集群来进行优化
负载均衡 热备 Tomcat集群
设置bin目录下所有sh文件为可执行文件
执行startBiblioteka p.sh即可tomcat7065.zip
Linux平台的常见指令
find / | grep jdk ps -ef | grep tomcat
chmod 777 *.sh tar,unzip
kill -9 19979
ls -al cp,scp , rm -rf , mv
Tomcat部署及优化
基于Windows平台
尽量采用安装版,减少参数配置可能出现的
问题
修改参数可能的三种方式
改catalina.bat文件 修改注册表 打开tomcat6w.exe文件进行操作
基于Linux平台
一般Linux 都自带OpenJDK,配置使用该JDK即可 将tomcat打包为zip,上传到服务器
Tomcat6生产优化方案
Tomcat6生产优化方案在现场使用tomcat6.0的过程中,如果不经过优化会大降低应用程序的运行效率。
即使在应用负载均衡的环境下也很难达到理想的运行效率,因此tomcat6的优化也突显出的很大的重要性。
针对网上的一些文档,制订如下优化方案,当然这些方案也是属于试验阶段,没有针对真正的生产环境测试过。
方案如下:一、使用带有NIO的http1.1的超文件传输协议:Java的IO操作集中在java.io这个包中,是基于流阻塞API(即BIO,Block IO)。
对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务器端应用,往往需要一个更为有效的方式来处理IO。
从JDK1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞IO操作的API(即NIO,non-blocking IO)被引入。
BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程,每个连接共用一个线程。
而Tomcat6应用NIO只是用在处理发送、接收信息的时候用到,也就是说:tomcat6还是传统的多线程Servlet。
因此即使我们的JAVA应用使用ThreadLocal的,例如JSF的FaceContext、Hibernate的session管理、Strusts 的context的管理等等,也不会因为使用NIO而受到影响。
更改方法:打开tomcat的配置文件:#vi $TOMCAT_HOME/conf/server.xml找到:<Connector port="8080" protocol="http1.1" .....改为:<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"二、使用APR来增强Tomcat性能:Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux 服务器:
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms4096m -Xmx4096m -Xmn1024m XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
PTS% %DEBUG_OPTS% -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -
Dcatalina.home="%CATALINA_HOME%"
-
Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% >> %C
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javasc ript"
/>
4. 通过启动 startup 命令配置 JVM 参数
配置 TOMCAT_HOME\bin\catalina.sh 文件(windows catalina.bat)
Windows 服务器:
set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms4096m -Xmx4096m -Xmn1024m XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC
securerandom.source=file:/dev/./urandom
2. 解决 Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
配置 TOMCAT_HOME\config\catalina.properties tomcat.util.http.parser.HttpParser.requestTargetAllow=| 调整为: tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
6. WINDOWS 服务器,让日志输出到 catalina.out 中配置
配置 TOMCAT_HOME\bin\catalina.sh 文件
在 "%CMD_LINE_ARGS% %ACTION%" 后面机上 >> %CATALINA_HOME%\logs\catalina.out
如:
rem Execute Java with the applicable properties
4.2 第二种配置方法(JVM 参数只对改 TOMCAT 有效)
JAVA_HOME=/opt/java/jdk8/jdk1.8.0_131 CATALINA_HOME=/opt/tomcat8/tomcat8080 CATALINA_OPTS="-Dfile.encoding1024m XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" CATALINA_PID=$CATALINA_HOME/catalina.pid
/>
3.3. 配置连接
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" URIEncoding="utf-8" redirectPort="8443" connectionTimeout="20000" maxConnections="10000" enableLookups="false" acceptCount="1000" maxHttpHeaderSize="65536" compression="on" disableUploadTimeout="true" compressionMinSize="2048" acceptorThreadCount="2"
调整为:
<Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">
加入:
<!-- path 为访问路径 docBase 为 要发布的项目路径 --> <Context path="/" docBase="/opt/data/leaf6-isp-gateway-1.0-SNAPSHOT" /> <Context path="/fs" docBase="/opt/data/leaf6-isp-file-1.0-SNAPSHOT" />
5.3.2 修改 JvmMs,JvmMx 设置最大、最小内存
5.3.3 修改 Options 参数,设置其他内存
-Dcatalina.home=E:\programs\apache-tomcat-8.5.23 -Dcatalina.base=E:\programs\apache-tomcat-8.5.23 -Djava.io.tmpdir=E:\programs\apache-tomcat-8.5.23\temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=E:\programs\apache-tomcat-8.5.23\conf\logging.properties
4.2 参考配置值 内存 4G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn512m XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" 内存 8G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms4096m -Xmx4096m -Xmn1024m XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" 内存 16G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms8192m -Xmx8192m -Xmn2048m XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" 内存 32G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms16384m -Xmx16384m -Xmn4096m XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
set SERVICE_NAME=Tomcat8 set DISPLAYNAME=Apache Tomcat 8.5 %SERVICE_NAME%
5.2 注册(删除)服务
service.bat install (remove)
5.3 调整 JVM 参数:
5.3.1 找到注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\tomcat8\Parameters\Java
注:-Xmn 年轻代大小 整个 JVM 内存大小=年轻代大小 + 年老代大小 + 持久代大小。 持久代一般固定大小为 64m,所以增大年轻代后,将会减小年老代大小。此值对系
统性能影响较大,官方推荐为堆内存 3/8 通过实际配置:感觉 1/4 差不多
5. TOMCAT 注册成 WINDOWS 服务
5.1 修改服务名称,修改 service.bat
Tomcat 配置优化集合
1. Tomcat 启动时 SecureRandom 非常慢解决办法
在 JVM 环境中解决: 打开 $JAVA_PATH/jre/lib/security/java.security 这个文件,找到下面的内容:
securerandom.source=file:/dev/random 替换成:
Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -