设为首页 收藏本站
查看: 1421|回复: 0

[经验分享] tomcat 配置文件优化

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-20 10:22:38 | 显示全部楼层 |阅读模式

一、前言

对于tomcat的优化主要包括两个方面,一个是对Tomcat启动参数进行优化配置,另一个是Tomcat容器内的优化配置,下面分别用具体详细的参数配置说明进行分析(更多推荐“tomcat的HTTPS安全通道配置”、源码分析等)

二 、Tomcat内存优化

tomcat启动参数设置,主要在其bin目录下catalina文件(window环境对象catalina.bat、linux环境对应catalina.sh)进行设置,在文件头部复制下面参数示例,

1. Window环境

    详细的配置参数如下,关于参数的详细说明参见"关于jvm内存优化部分"

1

2

3

4

5

6

7

8

9

10

11

set JAVA_OPTS=-server -Xms1400M -Xmx1400M -Xss512k
-XX:+AggressiveOpts -XX:+UseBiasedLocking
-XX:PermSize=128M -XX:MaxPermSize=256M
-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m  
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true

    简单配置,如下:

1

set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

标准参数(-),所有JVM都必须支持这些参数的功能,而且向后兼容;例如:

-client——设置JVM使用Client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试;在32位环境下直接运行Java程序默认启用该模式。

-server——设置JVM使Server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的JDK环境下默认启用该模式。

非标准参数(-X),默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容;

非稳定参数(-XX),此类参数各个JVM实现会有所不同,将来可能会不被支持,需要慎重使用;

2. Linux环境

    详细配置如下:

1

2

3

4

5

6

7

8

9

10

11

12

JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:PermSize=128M -XX:MaxPermSize=256M
-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC  
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true "

简单配置如下:

1

JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

3. 单类或jar包

1

java.exe  -Xms128m -Xmx800m   Main

三、Tomcat连接器优化

tomcat本身处理最大并发有服务器系统本身上限决定(一般window的1000左右,linux为2000左右),但是默认设置只有25,因此打开其conf目录下server.xml文件,定位到如下内容,默认是比较简单的配置:

1

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

其实详细的默认缺省配置应该是:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<Connector port="8080"
protocol="HTTP/1.1"
URIEncoding="UTF-8"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="300"  maxThreads="300"
maxProcessors="1000" minProcessors="5"
useURIValidationHack="false" compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443"/>

URIEncoding:设置含有中文名的文件的url编码方式

minSpareThreads:初始化空闲线程数

maxSpareThreads:最大允许空闲线程存活数

connectionTimeout:网络连接超时时间毫秒数

maxThreads:tomcat可创建的最大线程并发数

acceptCount:当线程池满了,即到达maxThreads设置的值,还可以接受客户端请求数到临时队列等待区,等待线程释放后依次排队使用

maxProcessors与minProcessors:window的1000左右,linux为2000左右

compression:给Tomcat配置gzip压缩(HTTP压缩)功能,完整配置如下:

1

2

compression="on" compressionMinSize="2048"            
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain

HTTP 压缩可以大大提高浏览网站的速度,客户端请求资源后,服务器端将文件压缩,由客户端负责解压缩。相对于普通过程(HTML,CSS,Javascript,Text) ,节省40%左右流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出内容也能进行压缩,压缩效率非常高。1)compression="on" 开启压缩功能2)compressionMinSize="2048" 设置压缩的输出内容大小,默认为2KB3)noCompressionUserAgents="gozilla, traviata" 对于指定浏览器,不启用压缩4)compressableMimeType="text/html,text/xml" 压缩类型

四、NIO配置

默认配置BIO方式兼容版本,NIO(No-blocking I/O)从JDK 1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞I/O操作的API被引入,如需配置如下

将默认service.xml配置

1

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

修改为

1

<Connector connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352173-1-1.html 上篇帖子: Tomcat7&8manager 管理端配置及远程访问manager 下篇帖子: JDBC连接错误:通过端口 1433 连接到主机 localhost 的 TCP/IP ... 配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表