zoukankan      html  css  js  c++  java
  • tomcat8 的优化

    1.下载tomcat8

    2.配置

       修改tomcat_user.xml,配置管理用户(设置角色,和用户密码)

      <role rolename="manager"/>
      <role rolename="manager-gui"/>
      <role rolename="admin"/>
      <role rolename="admin-gui"/>
      <user username="tomcat" password="123456" roles="manager,manager-gui,admin,admin-gui"/>
      

    修改apache-tomcat-8.5.43webappsmanagerMETA-INF/context.xml文件

    <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />-->

    3.启动tomcat./bin/startup.bat

        启动好后,就可以在浏览器里访问127.0.0.1:8080,在打开的tomcat页面上有个server status,点击后输入上面配置的tomcat/123456,就可以登陆进去了。

    4.开始优化

       a.首先要禁用ajp服务,修改conf/server.xml文件,将下面这行注释掉,重新启动tomcat

        禁用原因:它只适合apache服务器的,一般我们用nginx。

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

        b.执行器(线程池)

         修改server.xml文件

    <!-- maxThreads最大并发数,默认200
        minSpareThreads 初始化时创建 的线程 数,默认25
        prestartminSpareThreads 配合上面使用,必须为true
        maxQueueSize最大等待队列,超过就拒绝 -->
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="4" prestartminSpareThreads="true" maxQueueSize="100"/>
    <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

      c.3种运行模式

        bio:默认模式,性能低下。

        nio:推荐使用,tomcat8使用nio2

        apr:

        三种模式如何切换,只需要修改protocol就可以了,一样是在conf/server.xml文件里

        <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.http11Nio2Protocol"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    5.压力测试

       a.使用jMeter工具

         新建 一个测试任务,新增一个测试线程 

      添加好后,再给线程分配任务,总共1000个线程,每个线程循环10次

    再增加一些测试统计图

    还没开始就已经满了。

    2b6:sun.nio.ch.WindowsAsynchronousSocketChannelImpl[connected local=/127.0.0.1:8080 remote=/127.0.0.1:60537]] for processing
            java.util.concurrent.RejectedExecutionException: Work queue full.
                    at org.apache.catalina.core.StandardThreadExecutor.execute(StandardThreadExecutor.java:172)
                    at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1080)
                    at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.failed(Nio2Endpoint.java:588)
                    at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:556)
                    at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:547)
                    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
                    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281)
                    at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579)
                    at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397)
                    at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                    at java.lang.Thread.run(Thread.java:748)

    接下来,我把刚才配置的线程池修改了

        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="1000"/>

    结果没出错,说明配置起作用了。

    6.修改catalina.bat,增加jvm的优化

       a.并行回收

    JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGc -Xms64 -Xmx512m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -xloggc:../logs/gc.log"

       b.G1收集器

    JAVA_OPTS="-XX:+UseG1GC -XX:+MaxGCPauseMillis=100 -Xms64 -Xmx512m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -xloggc:../logs/gc.log"
    ...
  • 相关阅读:
    服务器选型:x86 vs 小型机谁更胜一筹?
    MySQL与PostgreSQL相比哪个更好?
    微服务架构优缺点
    聊聊Flume和Logstash的那些事儿
    HDFS文件系统
    阿里巴巴鹰眼技术解密
    OLAP、OLTP的介绍和比较
    storm架构及原理
    swift ClassNameFromString 的替换方法 + 创建TableviewHelper
    swift 屏幕的翻转 + 状态栏(statusBar)的隐藏
  • 原文地址:https://www.cnblogs.com/javage/p/11241242.html
Copyright © 2011-2022 走看看