Tomcat优化

作者: 撒啊啊啊空间 | 来源:发表于2018-06-20 22:30 被阅读0次

    文章针对linux操作系统。

    优化预览

    图片中,html页面,在tomcat安装目录下。

    一、内存优化

            linux系统中,参数在catalina.sh中配置。

            配置最小内存:-Xms2048M,最大内存:-Xmx2048M。

            -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=F:\software\apache-tomcat-8.0.36\logs\heap.dump。内存溢出时,内存影像dump到文件中。

            新生代,老生代不用配置了,新版本的jdk默认的已经做的非常好了。jdk8已经不存在永久代。从JDK8开始,永久代(PermGen)的概念被废弃掉了,取而代之的是一个称为Metaspace的存储空间。可理解为元数据空间。 

           移除永久代的工作从JDK1.7就开始了。JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。但永久代仍存在于JDK1.7中,并没完全移除,譬如符号引用(Symbols)转移到了native heap;字面量(interned strings,字符串池)转移到了java heap;类的静态变量(class statics)转移到了java heap。

    转载:Java8内存模型—永久代(PermGen)和元空间(Metaspace)

    转载:为何去掉永久代

    如果你的业务生成的对象很多会进入老年代,生命周期非常长,建议内存稍大一点。这样可以节约频繁的GC的开销。

    如果你的业务生成的对象很多都是朝生夕灭,生命周期短暂,建议新生代和老年代内存比例可以适当调整,老年代小一点。Min GC会相对来说稍微频繁一点。但是尽量避免Full GC。因为这个对JVM性能影响比Min GC大很多。

    如果你们的业务对内存很敏感,上线前一半要做很多实验和测试来确定合适的内存大小。

    新生代和老年代的比例如:-XX:NewRatio=2,即新生代:老年代=1:2。jdk8中,配置2g内存后,查看tomcat信息,如下图所示。

    tomcat运行后,默认页面,点击server status

    二、并发优化

    具体参数含义,参考tomcat安装目录下,webapps\docs\config里的http.html文件。

    2.1 maxConnections

         最大连接数。对于 NIO and NIO2 默认值为10000. 对于 APR/native, 默认值为8192。windows系统默认采用APR。linux下,需安装配置。apr适合高并发下的文件读写。

    2.2 acceptCount

    并发连接数达到配置的值时,新的请求放入队列中。该值为队列大小。默认值为100.

    2.3 maxThreads

    最大线程数。默认200。一般8核cpu,200个线程足够了。如果存在大量的web输入,等待IO,该值可以调大。

    2.4 minSpareThreads

    默认10。最小空闲线程。

    具体参数在server.xml里配置。

    三、其他优化

    3.1 autoDeploy

    具体参数含义,参考tomcat安装目录下,webapps\docs\config里的host.html文件。

    该参数是指,tomcat是否周期性的检查有没有新的应用或是更新的应用。默认为true,会影响性能。

    3.2 enableLookups

    具体说明,http.html文件中。

    如果想进行dns查询,设置为true。如果想跳过,则设置为false,会直接返回IP地址。默认false(低版本tomcat不一定)。false下,会提升性能。

    3.3 reloadable

    true的情况下,监控WEB-INF/classes/和/WEB-INF/lib下的变化,自动重新加载web应用。线上绝对不允许开发,会造成非常严重的负载。默认也是false.

    3.4 AJP

    ajp是和apache集成的时候用的,一般采用的是nginx+tomcat,用不到,注销掉。即在server.xml文件中,注销:

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    3.5 关闭SSLEngine

    如果没有用到ssl,在server.xml中,

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off">

    总体来说,tomcat新的版本,大部分已经配置好了,基本上能做到开箱即用。

    三、apr连接器

    apr会用到native的api,适用于大并发。如果网站用到大并发,需要用到apr。

    安装最新apr和其依赖项,到官网下载。

    安装完成后,在server.xml里配置如下:

    具体安装apr完成之后,修改总览如下。

    从JDK8开始,永久代(PermGen)的概念被废弃掉了,取而代之的是一个称为Metaspace的存储空间。

    -XX:MetaspaceSize=128m,设置元空间初始大小为128M。该值越大触发Metaspace GC的时机就越晚。随着GC的到来,虚拟机会根据实际情况调控Metaspace的大小,可能增加上线也可能降低。Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存大小有关。

    如果Tomcat不处理静态资源的话,没有必要配置使用nio/bio/apr (用默认的 HTTP 1.1 就可以)

    相关文章

      网友评论

        本文标题:Tomcat优化

        本文链接:https://www.haomeiwen.com/subject/rhrfyftx.html