tomcat服务器的优化
直接配置即可
首先你要在tomcat服务器上添加一个管理员账户
然后你就可以查看这个页面
这历史服务器状态,通过查看服务器状态,调整服务器参数:
接下来看看我是怎么配置的把。
打开tomcat的配置文件:server.xml
我直接粘代码了:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="800"
minSpareThreads="100"
maxQueueSize="100"
prestartminSpareThreads="true"/>
这里进行了2手配置
1.启用Nio
2.修改了默认的连接池参数
下面我还禁用了AJP服务,也能增加服务器的性能
其实优化服务器,我们一般都是先纵向优化,然后在横向优化,先把一个弄好了,其它的复制就可以了
禁用AJP服务很简单,直接把下面这段代码注释掉就可以了
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
这样tomcat的优化就已经完成了,当然,如果要最求更高的性能,我们还需要对服务器运行的虚拟机参数进行配置,在配置之前你需要知道虚拟机中的内存模型
包括: Yong(年轻代)被划分为3个部分 Eden 和两个大小严格相同的Survivor区 Survivor区中某一时刻只有一个被使用,另一个留作垃圾收集时复制对象使用 在年轻代变满时,GC就会将存活的对象移到空闲的Survivor区中,根据jvm的策略,经过一定次数的垃圾收集后,依然存活在该区域的对象就会转移到终身代中。
Tenured(终身代)保存生命周期长的对象 老的对象 比如:spring容器中的对象 。
Perm(永久代)主要保存class,method,field对象
我相信,有些经验的程序员一般都遇到过这个错误:java.lang.OutOfMenoryError : PermGen space 错误。
其实造成这个错误的原因就是,永久带的内存不足了,在启动服务器的时候加载到内存的jar包过多,导致内存溢出。下面会给出解决办法,以及怎么配置
jvm参数,以便调优jvm。
参数:
-Dfile.encoding=UTF-8编码方式
-server 服务配置
-Xms 最小占用内存
-Xmx 最大占用内存
-XX:NewSize年轻代占用内存
-XX:MaxNewSize年轻带最大占用内存
-XX:PermSize永久带占用内存
-XX:MaxPermSize永久代最大占用内存
-XX:NewRatio年轻带和终身代的比值
-XX:SurvivorRation两个Survivor在年轻代的比值
-XX:MaxTenuringThreshold垃圾的最大年龄 默认为15 如果是0 则不经过Survivor区,直接进入终身代
-XX:+DisableExplicitGC忽略手动调用GC,垃圾回收全权交给jvm处理。
如何使配置生效能?
在Catalina.bat/.sh文件的第一行
注意在linux中要加个大大的双引号,将所有的参数引起来才可以,而且在linux中不需要set
加入:set JAVA_OPTS= 后面接上参数就可以生效了,下面我做个样例:
注意比对我上图中jvm的参数
我的配置:因为我是macOS所以采用和linux中相同的配置
JAVA_OPTS=" -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx3076m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256M -XX:NewRatio=2 -XX:MaxTenuringThreshold=10 -XX:+DisableExplicitGC"