Tomcat 性能优化
2018-03-01 15:55
337 查看
配置 Tomcat 的用户名和密码
如果想在 Tomcat 的主页查看服务器的状态和内存配置,需要配置管理员的用户名和密码。在 config/tomcat-user.xml 中配置用户名和密码,配置的用户名为 tomcat,密码为 tomcat
<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="admin,manager,admin-gui,manager-gui"/>
登录之后可以看到服务器的状态,包括 JVM、ajp-nio-8009 和 http-nio-8080。
优化一: Tomcat 运行模式、执行器、连接器
运行模式
Tomcat 有三种运行模式:bio、nio、apr。1)bio:Tomcat7 以前版本默认模式,一个线程处理一个请求,没有经过任何优化处理。并发量高时,线程数最多,浪费资源,并且是阻塞式线程。
2)nio:利用 Java 的非阻塞 IO。Tomcat8 默认使用这种方式,Tomcat7 需要修改 server.xml 的 Connector 节点的协议,即8080 端口那句话。
protocol="org.apache.coyote.http11.Http11NioProtocol"
3)apr:从操作系统级别上解决异步 io 阻塞。安装困难,但是大幅度提升性能。
执行器 Executor
Tomcat 默认没有启动线程池。在 server.xml 中打开注释,启用线程池。根据主机性能和需求改变 maxThreads 和 minSpareThreads 的大小,并且要将 Executor 的 name 名称添加到端口号处。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="800" minSpareThreads="100" maxQueueSize="100" prestartminSpareThreads="true" />
连接器 Connector
连接器 Connector 是 Tomcat 接收请求的入口。Connector有两种:HTTP Connector 和 AJP Connector。与执行器配合使用:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="800" minSpareThreads="100" maxQueueSize="100" prestartminSpareThreads="true"/> <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" acceptCount="100" maxConnections="800" connectionTimeout="20000" maxHttpHeaderSize="8192" tcpNoDelay="true" compression="on" compressionMinSize="2048" disableUploadTimeout="true" redirectPort="8443" enableLookups="false" URIEncoding="UTF-8"/>
连接器单独使用(不需要同执行器一块使用):
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="1000" minSpareThreads="100" acceptCount="1000" maxConnections="1000" connectionTimeout="20000" maxHttpHeaderSize="8192" tcpNoDelay="true" compression="on" compressionMinSize="2048" disableUploadTimeout="true" redirectPort="8443" enableLookups="false" URIEncoding="UTF-8"/>
优化二:禁用AJP Connector连接器
AJP:Apache JServer Protocol服务器内部的协议。Web 服务器是通过 Tcp 来交互的,为了节省 socket 的创建,Web 服务器会尝试维护一个永久的 Tcp 连接到 Servlet 容器。禁用 AJP 时,Tomcat 可以直接跳过静态资源的处理,实现动静分离。
在 server.xml 中注释掉:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
优化三:JVM 参数优化
1)Java 栈内存2)堆内存
Windows 版本,修改 bin/catalina.bat 文件:*
set 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
linux 版本,修改 bin/catalina.sh 文件:*
set JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024M -Xmx2048M -XX:NewSize=512M -XX:MaxNewSize=1024M -XX:PermSize=256M -XX:MaxPermSize=25 b216 6M -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"
相关文章推荐
- Tomcat性能调整优化
- tomcat性能优化
- Tomcat性能优化
- tomcat7.0性能优化-挑战极限完整版
- Tomcat安全配置与性能优化
- linux优化tomcat容器JVM性能调优
- Tomcat性能优化方案整理
- Tomcat开启APR运行模式,优化并发性能
- 优化tomcat性能
- Tomcat性能调整优化
- tomcat性能优化
- windows下tomcat性能优化总结
- Tomcat 6 性能优化 小结
- tomcat 性能优化
- Tomcat 生产服务器性能优化
- Tomcat性能优化方案整理
- Tomcat 生产服务器性能优化
- Tomcat性能优化
- tomcat性能优化
- Tomcat6性能优化