当前位置 博文首页 > xinyi_java的博客:Tomcat7优化

    xinyi_java的博客:Tomcat7优化

    作者:[db:作者] 时间:2021-09-04 15:42

    目录

    1、目的

    2、服务资源配置

    3、优化配置

    3.1?配置 tomcat?管理员账户

    ?3.2 Tomcat的3种运行模式

    3.2.1 启动NIO模式

    3.3.1?开启并且使用

    3.3.2 参数说明

    3.3.3 最佳实践

    3.4 连接器(Connector)

    3.4.1 通用属性

    4 NIO 的具体配置

    4.1 最佳实践

    5 JVM参数的优化

    5.1?JVM?内存模型

    5.2 JVM参数

    5.3 在tomcat中设置jvm参数

    5.3.1 windows

    5.3.2 Linux


    1、目的

    通过优化 tomcat 提高网站的并发能力。

    2、服务资源配置

    服务器所能提供 CPU、内存、硬盘的性能对处理能力有决定性影响。

    3、优化配置

    3.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/

    ?

    ?3.2 Tomcat的3种运行模式

    ?1 、 bio

    默认的模式,性能非常低下,没有经过任何优化处理和支持. ???

    2 、 nio(new IO)

    利用 java 的异步 io 护理技术,no blocking IO 技术.

    3 、 apr

    安装起来最困难,但是从操作系统级别来解决异步的 IO 问题,大幅度的提高性能.

    3.2.1 启动NIO模式

    修改 server.xml 里的 Connector 节点,修改 protocol 为
    org.apache.coyote.http11.Http11NioProtocol

    ?执行器(线程池)

    在 tomcat 中每一个用户请求都是一个线程,所以可以使用线程池提高性能

    3.3.1?开启并且使用

    配置

    ?

    ?

    ?3.3.2 参数说明

    ?

    ?

    ?3.3.3 最佳实践

    3.4 连接器(Connector)

    Connector 是 Tomcat 接收请求的入口,每个 Connector 有自己专属的监听端口
    Connector 有两种:HTTP Connector 和 AJP Connector
    

    3.4.1 通用属性

    ?

    ?

    ?

    ?

    4 NIO 的具体配置

    ?

    ?

    ?

    4.1 最佳实践

    5 JVM参数的优化

    适当调整 Tomcat 的运行 JVM 参数可以提升整体性能。

    5.1?JVM?内存模型

    ?有如下原因可能导致Full GC:

    1.年老代(Tenured)被写满
    2.持久代(Perm)被写满
    3.System.gc()被显示调用
    4.上一次 GC 之后 Heap 的各域分配策略动态变化

    5.2 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
    11、 补充:---- gc 的日志的设置

    5.3 在tomcat中设置jvm参数

    5.3.1 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

    5.3.2 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"

    cs
    下一篇:没有了