Tomcat优化
来源:互联网 发布:js是什么端语言 编辑:程序博客网 时间:2024/06/07 22:27
Tomcat优化
标签(空格分隔): Tomcat
优化的目的
通过优化tomcat提高网站的并发能力
优化一:提高服务器资源
服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响
优化二:调整Tomcat系统参数
1、配置tomcat管理员账户
在conf/ tomcat-users.xml下添加用户:
<role rolename="manager"/><role rolename="manager-gui"/><role rolename="admin"/><role rolename="admin-gui"/><user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/>
启动tomcat,登录查看信息:
http://127.0.0.1:8080/
2、tomcat的3中运行模式
tomcat的运行模式有3种:
bio
默认的模式,性能非常低下,没有经过任何优化处理和支持.
**nio
利用java的异步io护理技术,no blocking** IO技术.
apr
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能
2.1 启用NIO模式
修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol
<Connector connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
3、执行器(线程池)
在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能
3.1 开启并使用
修改server.xml配置:
<Service name="Catalina"> <!--The connectors can use a shared executor, you can define one or more named thread pools--> <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> <!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector connectionTimeout="20000" port="8080" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
connector的executor的值要对应Executor的name的值,其中该值自定义即可。
3.2 参数介绍(可在Tomcat主页的Configuration中查看)
3.3 最佳实践 — tomcat 7版本
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="800" minSpareThreads="100" maxQueueSize= "100" prestartminSpareThreads = "true" minSpareThreads="4"/>
4、连接器(Connector)
Connector是Tomcat接收请求的入口,每个Connector有自己专属的监听端口
Connector有两种:HTTP Connector和AJP Connector
最佳实践(参数见Tomcat主页Configuration):
5、禁用AJP的连接器
AJP(Apache JServer Protocol)
AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。
我们一般是使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用。
<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>-->
优化三:调整JVM的参数
修改文件:bin/catalina.sh
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:MaxTenuringThreshold=50 -XX:+DisableExplicitGC"
参数说明:
1、 file.encoding默认文件编码
2、 -Xmx1024m设置JVM最大可用内存为1024MB
3、 -Xms1024m 设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
4、 -XX:NewSize设置年轻代大小
5、 XX:MaxNewSize设置最大的年轻代大小
6、 -XX:PermSize设置永久代大小
7、 -XX:MaxPermSize设置最大永久代大小
8、 -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与终身代的比值(除去永久代)。设置为4,则年轻代与终身代所占比值为1:4,年轻代占整个堆栈的1/5
9、 -XX:MaxTenuringThreshold=0:设置垃圾最大年龄,默认为:15。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
10、 -XX:+DisableExplicitGC这个将会忽略手动调用GC的代码使得 System.gc()的调用就会变成一个空调用,完全不会触发任何GC
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文件参数(第一行)
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”
- tomcat 优化
- tomcat优化
- Tomcat优化
- tomcat优化
- Tomcat优化
- Tomcat优化
- tomcat优化
- tomcat优化
- TOMCAT优化
- TOMCAT优化
- Tomcat 优化
- tomcat优化
- tomcat优化
- tomcat优化
- tomcat优化
- Tomcat优化
- Tomcat优化
- tomcat优化
- v-if和v-show的使用
- MySQL · 引擎特性 · DROP TABLE之binlog解析
- 强化学习入门玩游戏
- 【惊雷】Linux下Nginx+(多)Tomcat的负载均衡的详细与实现
- String-系列int-String-StringBuffer三者之间的相互转换
- Tomcat优化
- MySQL数据库-存储过程详解
- QT 奇数个中文保存到文件中会出现乱码问题
- log4j分级别打印日志+通过socket将日志传输至日志服务器
- Aiseesoft Burnova(多功能DVD刻录软件) 官方版 V1.3.6下载 | Aiseesoft专业dvd光盘刻录软件
- iframe如何触发父元素事件以及父页面控制iframe子页面元素
- 欢迎使用CSDN-markdown编辑器
- Opensuse42.2换源并给python3安装numpy,scipy.Matplotlib
- hibernate checkbox 根据id批量删除