tomcat7实战调优笔记

java -XX:+<option>:开启此参数指定的功能

java -XX:-<option>:关闭功能

-xx:<option>=<value>:给option指定的选项赋值

java -XX:+PrintFlagsFinal

显示所有支持的参数以及状态

java -D<name>=<value>:set a system property

设置系统属性

sun jdk监控和故障处理工具

jps, jvm process status tool 显示指定系统内所有的hotspot 虚拟机进程的列表信息

jstat,jvm statistics monitoring tool 收集并显示hotsppt虚拟机各方面的运行数据

jinfo,显示hotspot正在运行虚拟机配置信息的

jmap:生成某hotspot虚拟机的内存转出快照

可视化工具

jconsole:java的监视与管理控制台

jvisualvm.虚拟机配置本身

tomcat各组件的关系:

<Server>

<Service>

<Connector />

<Engine>

<Host>

<Context></Context>

</Host>

</Engine>

</Service>

</Server>

server.xml 核心配置文件

tomcat-users.xml  用户配置文件

web.xml  默认的 应用程序部署描述符

context.xml  为上线文配置文件

logging.properties   日志程序部署程序

catalina.properties  定义内存属性的

catalina.policy   管理安全级别的

一般维护xml后缀的文件就可以了

localhost_access_log.2016-06-24.txt 是用户访问日志

catalina.out       程序启动日志

temp是临时文件目录

webapps应用程序目录

调优

在catalina.sh文件第一行加下面代码

JAVA_OPTS=‘-Xms2048m -Xmx2048m‘

或者这行

JAVA_OPTS=‘-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC‘

默认BIO模式,是性能最差的模式,

推荐使用nio模式,还有种apr模式配置起来十分复杂

打开server.xml文件

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

改成

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="20000"

redirectPort="8443" />

打开线程池server.xml

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

maxThreads="150" minSpareThreads="4"/>

这段取消注释

并且更改

<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="20000"

redirectPort="8443" />

重点调优参数

最大连接数maxThreads="500"

最小活跃连接数minSpareThreads="4" 建议设置100

调高最小连接数还要打开开关改成下面这样

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

maxThreads="500" minSpareThreads="100" prestartminSpareThreads="true"/>

最大队列等待请求数maxQueueSize,默认是无上限,根据业务调整

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

maxThreads="500" minSpareThreads="100" prestartminSpareThreads="true" maxQueueSize="50"/>

连接器调优

maxPostSize最大post限制,默认情况下是2M限制

关闭ajp协议,ajp是阿帕奇跟tomcat结合使用用到的协议,大多情况下使用nginx

注释掉ajp协议即可

<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />-->

时间: 2024-09-29 16:45:18

tomcat7实战调优笔记的相关文章

Java性能调优笔记

Java性能调优笔记 调优步骤:衡量系统现状.设定调优目标.寻找性能瓶颈.性能调优.衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈).性能调优结束. 寻找性能瓶颈 性能瓶颈的表象:资源消耗过多.外部处理系统的性能不足.资源消耗不多但程序的响应速度却仍达不到要求. 资源消耗:CPU.文件IO.网络IO.内存. 外部处理系统的性能不足:所调用的其他系统提供的功能或数据库操作的响应速度不够. 资源消耗不多但程序的响应速度却仍达不到要求:程序代码运行效率不够高.未充分使用资源.程序结构不合理. C

tomcat7性能调优指导书

注意:调优tomcat需要了解使用的tomcat是什么版本,随着tomcat版本发展有新参数引入,同时有旧参数废弃.本文档以tomcat7为例进行调优 一. 线程池(Thread Pool)优化 编辑“Tomcat安装目录/conf/server.xml”文件,找到如下内容 <!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150&quo

redis性能调优笔记(can not get Resource from jedis pool和jedis connect time out)

对这段时间redis性能调优做一个记录. 1.单进程单线程 redis是单进程单线程实现的,如果你没有特殊的配置,redis内部默认是FIFO排队,即你对redis的访问都是要在redis进行排队,先入先出的串行执行. 之所以能够保持高性能是因为以下3点: 1)内存操作 2)数据结构简单 3)大多数是hash操作 redis基本的命令耗时都是us级别的,所以及时是单进程单线程,也能保证很高的QPS. 2.can not get Resource from jedis pool和jedis con

【我的技术我做主】oracle调优笔记(揭开传言的面纱)

一.oracle的不解之缘 别人高考报志愿,都是因为热爱那门专业,所以选择了大学的专业.还有些人报志愿是看到了未来长远的发展比较好,所以选择了大学的专业.而我呢高考志愿是如何选择的呢?家里人没啥文化,父母全是普通的老百姓,自然也没有人帮我参考报啥专业.于是和母亲商量上网查查吧,哪个专业比较好?搜着搜着,看到了一条"某互联网公司招聘数据库专业人员,年薪10W",我毫不犹豫的报了我的大学专业<数据库设计与开发>.现在回想起来,我自己都觉得可笑,就因为那1条招聘信息,我选择了我的

weblogic 调优笔记

weblogic核心调优: 性能包.阻塞线程.垃圾回收.块调整.TCP 缓冲积压.ssl 1.本地io性能包 在管理控制台中启动本地io,默认已经启动,enable native io 2.Socket Readers 默认队列中可用作套接口读取器的执行线程所占的百分比,默认30%,最大99%,来提高服务端接受客户端请求的速度和处理能力. -Dweblogic:ThreadPoolPercentSocketReaders=value 3.wlsx线程阻塞 Stuck Thread Max Tim

tomcat7自身调优和JVM调优

1. Tomcat优化其实就是对server.xml优化(开户线程池,调整http connector参数) 搜索[<Executor name="tomcatThreadPool"],开启并调整为 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" maxIdleTime="60000"

?二十种实战调优MySQL性能优化的经验

?http://www.searchdatabase.com.cn/showcontent_58391.htm [为查询缓存优化你的查询] 像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的.所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存. [EXPLAIN 你的 SELECT 查询] 使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的. [当只要一行数据时使用 LIMIT 1] 当

【JVM】调优笔记3-----JVM参数配置 JDK1.8

一.关于JVM参数配置,有多种途径. 1.在tomcat中直接配置的 打开tomcat的安装目录, 在bin下修改catalina.bat文件 添加如下: set "JAVA_OPTS=-Xmx300m -Xms300m -Xmn100m -XX:SurvivorRatio=8" 在这个位置: 启动tomcat即可起作用. 2.使用Myecplise,配置JVM参数 双击Tomcat,打开在如下位置,配置: -Xmx300m -Xms300m -Xmn100m -XX:Survivor

jvm性能调优笔记

-Xms5g-Xmx5g -XX:PermSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=1 -server -XX:+DisableExplicitGC  -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails 参数说明: -XX:CMSFullGCsBeforeCompaction=1  CMS fullGC时每隔一次进行内