当前访客身份:游客 [ 登录  | 注册加入尚学堂]
启用新域名sxt.cn
新闻资讯

Tomcat性能优化

helloworld 发表于 2年前  | 评论(0 )| 阅读次数(1031 )|   0 人收藏此文章,   我要收藏
摘要 tomcat内存优化,tomcat并发优化

一.Tomcat内存优化

T omcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数。

1.JAVA_OPTS参数说明

 
   -server  启用jdk 的 server 版;
   -Xms    java虚拟机初始化时的最小内存;
   -Xmx   java虚拟机可使用的最大内存;
   -XX:PermSize    内存永久保留区域
   -XX:MaxPermSize   内存最大永久保留区域 

服务器参数配置

 

现公司服务器内存一般都可以加到最大2G ,所以可以采取以下配置:


    JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'   

配置完成后可重启 Tomcat ,通过以下命令进行查看配置是否生效:


1.  首先查看Tomcat 进程号:

 
  1. sudo lsof -i:9027  

 

 

我们可以看到Tomcat 进程号是 12222

1.  查看是否配置生效:

 
  1. sudo jmap  – heap 12222    

 

 

我们可以看到MaxHeapSize 等参数已经生效。、

二.Tomcat并发优化

1.Tomcat连接相关参数

Tomcat 配置文件 server.xml 中的 <Connector ... /> 配置中

1.参数说明

minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为 10

maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为 75

acceptCount:允许的最大连接数,应大于等于 maxProcessors ,默认值为 100

enableLookups:是否反查域名,取值为: true false 。为了提高处理能力,应设置为 false

connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。

其中和最大连接数相关的参数为maxProcessors acceptCount 。如果要加大并发连接数,应同时加大这两个参数。

web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 2000 个左右, Linux 1000 个左右。

2.Tomcat中的配置示例

 
<Connector port="9027" 

                protocol="HTTP/1.1"

                maxHttpHeaderSize="8192"

                minProcessors="100"

                maxProcessors="1000"

                acceptCount="1000"

                redirectPort="8443"

                disableUploadTimeout="true"/> 


2.调整连接器connector的并发处理能力

1.参数说明

maxThreads  客户请求最大线程数

minSpareThreads    Tomcat初始化时创建的 socket 线程数

maxSpareThreads   Tomcat连接器的最大空闲 socket 线程数

enableLookups      若设为true, 则支持域名解析,可把 ip 地址解析为主机名

redirectPort        在需要基于安全通道的场合,把客户请求转发到基于SSL redirectPort 端口

acceptAccount       监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads 

connectionTimeout   连接超时

minProcessors         服务器创建时的最小处理线程数

maxProcessors        服务器同时最大处理线程数

URIEncoding    URL统一编码

 

<Connector port="9027" 

                protocol="HTTP/1.1"

                maxHttpHeaderSize="8192"

                maxThreads="1000"

                minSpareThreads="100"

                maxSpareThreads="1000"

                minProcessors="100"

                maxProcessors="1000"

                enableLookups="false"

                URIEncoding="utf-8"

                acceptCount="1000"

                redirectPort="8443"

                disableUploadTimeout="true"/>


2.Tomcat中的配置示例

 

3.Tomcat缓存优化

1.参数说明

c ompression 打开压缩功能   

compressionMinSize   启用压缩的输出内容大小,这里面默认为2KB

compressableMimeType 压缩类型

connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

2.Tomcat中的配置示例

 
<Connector port="9027" 

                protocol="HTTP/1.1"

                maxHttpHeaderSize="8192"

                maxThreads="1000"

                minSpareThreads="100"

                maxSpareThreads="1000"

                minProcessors="100"

                maxProcessors="1000"

                enableLookups="false"

                compression="on"

                compressionMinSize="2048"               

                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

                connectionTimeout="20000"

                URIEncoding="utf-8"

                acceptCount="1000"

                redirectPort="8443"

                disableUploadTimeout="true"/>


 

4.参考配置

1.旧有的配置

参考网络对服务器做过如下配置,拿出来分享下:

 
<Connector port="9027" 

protocol="HTTP/1.1" 

                maxHttpHeaderSize="8192"

                maxThreads="1000"

                minSpareThreads="25"

                maxSpareThreads="75"

                enableLookups="false"

                compression="on"

                compressionMinSize="2048"
         
               &nbsp;compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

                connectionTimeout="20000"

                URIEncoding="utf-8"

                acceptCount="200"

                redirectPort="8443"

                disableUploadTimeout="true" />


后来发现在访问量达到3 百万多的时候出现性能瓶颈。

2.更改后的配置

 
<Connector port="9027" 

                protocol="HTTP/1.1"

                maxHttpHeaderSize="8192"

                maxThreads="1000"

                minSpareThreads="100"

                maxSpareThreads="1000"

                minProcessors="100"

                maxProcessors="1000"

                enableLookups="false"

                compression="on"

                compressionMinSize="2048"

                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

                connectionTimeout="20000"

                URIEncoding="utf-8"

                acceptCount="1000"

                redirectPort="8443"

                disableUploadTimeout="true"/>


分享到:0
关注微信,跟着我们扩展技术视野。每天推送IT新技术文章,每周聚焦一门新技术。微信二维码如下:
微信公众账号:尚学堂(微信号:bjsxt-java)
声明:博客文章版权属于原创作者,受法律保护。如果侵犯了您的权利,请联系管理员,我们将及时删除!
(邮箱:webmaster#sxt.cn(#换为@))
北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂 咨询电话:400-009-1906 010-56233821
Copyright 2007-2015 北京尚学堂科技有限公司 京ICP备13018289号-1 京公网安备11010802015183