阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Tomcat中常用的调优

168次阅读
没有评论

共计 3123 个字符,预计需要花费 8 分钟才能阅读完成。

在平时使用 Apache、Nginx 或者是其他的提供相关 Web 服务软件中都有相应的性能模块调优修改,而在 Tomcat 中也有相应的性能调优修改的配置,在这里就简单的说一说比较常用的几个 Tomcat 中的性能调优配置参数,在 Tomcat 中调优参数可以分为 2 个部分:1、在 Tomcat 中的二进制文件夹 bin 目录下的 catalina.sh 或 catalina.bat 中添加修改配置 tomcat 使用运行参数;2、在 Tomcat 的 conf 文件夹中配置修改 server.xml 中的容器。

一、tomcat 使用运行参数 catalina.sh 调优

修改 catalina.sh 脚本,添加修改一下 JAVA_OPTS 变量参数:
JAVA_OPTS=”$JAVA_OPTS -Xms3072m -Xmx3072m -Xmn1536m\
-XX:PermSize=384m -XX:MaxPermSize=384m -XX:+UseConcMarkSweepGC\
-XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=500\
-XX:+CMSClassUnloadingEnabled -XX:+CMSClassUnloadingEnabled -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager”

-server:tomcat 默认是以一种叫 java –client 的模式来运行的,server 即意味着你的 tomcat 是以真实的 production 的模式在运行的性能更优
-Xms–Xmx:JVM 内存设置,JVM 初始分配的堆内存由 -Xms 指定,默认是物理内存的 1 /64;JVM 最大分配的堆内存由 -Xmx 指定,默认是物理内存的 1 /4。默认空余堆内存小于 40% 时,JVM 就会增大堆直到 -Xmx 的最大限制;
 空余堆内存大于 70% 时,JVM 会减少堆直到 -Xms 的最小限制,建议把最大和最小设置成一样有利于 JVM 的垃圾回收机制
–Xmn: 设置新生代,整个堆大小 = 新生代大小 + 年老代大小 + 持久代大小。此值对系统性能影响较大,Sun 官方推荐配置为整个堆的 3 /8
-XX: 每当 JDK 版本升级时,你的 JVM 都会使用最新加入的优化技术
-XX:PermSize: 设置非堆内存初始值,默认是物理内存的 1 /64
-XX:MaxPermSize: 设置永生代内存初始大小,即最大非堆内存的大小,默认是物理内存的 1 /4
-XX:+UseConcMarkSweepGC:CMS gc,这一特性只有 jdk1.5 即后续版本才具有的功能,它使用的是 gc 估算触发和 heap 占用触发
-XX:+UseCMSCompactAtFullCollection: 在使用 concurrent gc 的情况下, 防止 memoryfragmention, 对 live object 进行整理, 使 memory 碎片减少
-XX:+UseParNewGC: 对新生代采用多线程并行回收,这样收得快
-XX:+CMSClassUnloadingEnabled:CMS 收集器默认不会对永久代进行垃圾回收
-XX:CMSMaxAbortablePrecleanTime:CMS GC 需要经过较多步骤才能完成一次 GC 的动作,在 minor GC 较为频繁的情况下,很有可能造成 CMS GC 尚未完成,从而造成 concurrent mode failure, 可以通过 -XX: CMSMaxAbortablePrecleanTime 设置较小的值,以保证 CMS GC 尽快完成对象的回收,避免 concurrent mode failure 的现象,尤其是在 JDK 5.0+、6.0+ 的有些版本在 CMS-concurrent-abortable-preclean-start 和 CMS-concurrent-abortable-preclean 这两步间有可能会耗费很长的时间,导致可回收的旧生代的对象很长时间后才被回收,这是 Sun JDK CMS GC 的一个 bug

二、Tomcat 的 server.xml 配置文件

在 Tomcat 中的常用配置性能调优配置如下:
    <Connector port=”8080″ protocol=”HTTP/1.1″
              connectionTimeout=”15000″ maxThreads=”1000″ minSpareThreads=”100″
              maxProcessors=”1200″ acceptCount=”1000″
              enableLookups=”false” compression=”on”
              redirectPort=”8443″ />

connectionTimeout: 超时时间,单位毫秒,默认值为 60000,即 60 秒
maxThreads:tomcat: 起动的最大线程数,默认值为 200
minSpareThreads:Tomcat 初始化时创建的线程数。默认值 4
maxProcessors:Tomcat 运行时允许创建的最大线程数,默认值为 75,一般根据实际生产环境修改
acceptCount: 当 tomcat 起动的线程数达到最大时,接受排队的请求个数,默认值为 100,web server 允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右,Linux 是 1000 个左右,通常该值设置同 maxThreads 一样
enableLookups: 是否反查域名,默认值为 true。为了提高处理能力,应设置为 false
compression: 压缩传输,取值 on/off/force,默认值 off
redirectPort:SSL 的重定向端口,默认 8443

  总之,在平时需要根据实际生产情况修改,在 Tomcat 合理的性能调优后,会对 Tomcat 的总体性能会极大的提升。

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04 下安装 Tomcat 8.5.9  http://www.linuxidc.com/Linux/2017-06/144809.htm

Tomcat 中 session 的管理机制  http://www.linuxidc.com/Linux/2016-09/135072.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-09/147211.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3123字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中