tomcat优化
server.xml 文件优化
-
配置连接池
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-Jaye" maxThreads="1000" minSpareThreads="10"/> <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
name: 连接池的名称
namePrefix:连接池中线程名称前缀
maxThreads : 连接池允许存在的最大线程数
minSpareThreads : 连接池中最小存在的线程数
executor: 与连接池名称对应,表示使用的是那个连接池配置 -
修改Connector连接器的I/O模型为NIO模式
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
NIO模式最大化压榨了CPU,把时间片更好利用起来
NIO适合大量长连接 -
移除掉AccessLogValve
<!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> -->
valve实现都需要消耗java应用的计算时间,一般我们可以使用nginx来记录日志
web.xml文件优化
- 去除JspServlet
如果项目中并没有使用JSP就可以将JspServlet移除<!-- <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> --> <!-- <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping> -->
工程部署的三种方式
-
隐式部署(内部部署)
直接将war包或者工程文件放入tomcat的webapps文件夹下这种部署方式不推荐使用,会使tomcat和工程代码放在一起不方便维护
-
显示部署方式一(外部部署)
添加context元素到server.xml的Host节点下<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Context path="/Demo1" docBase="d:/Demo1" reloadable="false"></Context> </Host>
path: 工程访问的跟路径
docBase: 工程存放的目录
reloadable : 自动重载 - 默认是true(不同版本中有差异)
在生产环境下需要关闭自动重载,因为自动加载增加运行开销并且很容易内存溢出 -
显示部署方式二(外部部署)
在conf/Catalina/localhost文件目录下创建xml文件,文件名为工程访问根路径。xml文件内容如下:<?xml version="1.0" encoding="UTF-8"?> <Context docBase="d:/Demo1" reloadable="false"></Context>
docBase: 工程存放的目录
reloadable : 自动重载 - 默认是true(不同版本中有差异)
在生产环境下需要关闭自动重载,因为自动加载增加运行开销并且很容易内存溢出
常用工具
-
JConsole
JConsole是一个内置 Java性能分析器在java的安装bin目录下可以找到JConsole的启动文件,通过改工具可以看到内存,线程,类,javaBean的使用情况
-
JMeter
JMeter:一个Apache组织开发的基于Java的压力测试工具
下载地址:http://jmeter.apache.org/download_jmeter.cgi