tomcat简单优化

闲来无事整理一下以前笔记,看到了以前关于tomcat优化方面记得一些笔记,发一个,希望对有需要的人一个帮助

tomcat优化主要就是优化tomcat中的server.xml中的一些配置

一、配置tomcat管理员账户,在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

二、tomcat的优化

tomcat的运行模式有3种:

1、bio : blocking IO 阻塞IO

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

2、nio

nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并

能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性

能。

3、apr 

tomcat7或同tomcat8安装在win7及以上系统默认即使该方式,从操作系统级别来解决异步的IO问题,大幅度的提高性能.

可以通过修改server.xml配置将bio修改成nio


改成


三、线程池优化


将连接池注释放开,修改最大线程数以及最小连接数,个人查阅资料最优配置为最大线程数800,最小连接数100,如下:


四、禁用ajp来连接器

ajp类似与nginx的一个静态资源服务器,已经被nginx取代


注释掉该配置


tomcat的运行基于jvm,tomcat优化完自然要优化一下jvm,这样才能使tomcat达到最大性能,接下来就是一些jvm的优化。

jvm中主要分为栈,堆,方法区,jvm优化主要优化堆内存,对内存分为新生区、老年区、永久区。

jvm堆内存图:


Young区(新生区):被划分为三部分,Eden区和两个大小严格相同的Survivor区,其中,Survivor区间中,某一时刻只有其中

一个是被使用的,另外一个留做垃圾收集时复制对象用,在Eden区间变满的时候, GC就会将存活的对象移到空闲的Survivor区

间中,根据JVM的策略,在经过几次垃圾收集后,任然存活于Survivor的对象将被移动到Tenured区间。


Tenured区(老年区):主要保存生命周期长的对象,一般是一些老的对象,当一些对象在Young复制转移一定的次数以后,对

象就会被转移到Tenured区,一般如果系统中用了application级别的缓存,缓存中的对象往往会被转移到这一区间。


Perm区(永久区):主要保存class,method,filed对象,这部份的空间一般不会溢出,除非一次性加载了很多的类,不过在涉及

到热部署的应用服务器的时候,有时候会遇到java.lang.OutOfMemoryError : PermGen space 的错误,造成这个错误的很大原

因就有可能是每次都重新部署,但是重新部署后,类的class没有被卸载掉,这样就造成了大量的class对象保存在了perm中,这

种情况下,一般重新启动应用服务器可以解决问题。


如果项目中对象创建频繁,用完就扔掉,将年轻区的内存设置高点,年轻区越大对象存活时间越长,垃圾回收次数越多,被回收

概率越高,如果对象很少,很少创建和销毁,将老年区设置高点。


永久区一般设置固定值,年轻区与老年区通过比例来确定大小

◆ Total Heap
-Xms :指定了JVM初始启动以后初始化内存
-Xmx:指定JVM堆得最大内存,在JVM启动以后,会分配-Xmx参数指定大小的内存给JVM,但是不一定全部使用,JVM会根据-Xms参数来调节真正用于JVM的内存
-Xmx -Xms之差就是三个Virtual空间的大小

◆ Young Generation
-XX:NewRatio=8意味着tenured 和 young的比值8:1,这样eden+2*survivor=1/9 堆内存
-XX:SurvivorRatio=32意味着eden和一个survivor的比值是32:1,这样一个Survivor就占Young区的1/34.
-Xmn 参数设置了年轻代的大小

◆ Perm Generation

-XX:PermSize=16M -XX:MaxPermSize=64M 

Thread Stack

-XX:Xss=128K

linux中tomcat内存设置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"

window中tomcat内存设置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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值