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"
    ...
  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/javage/p/11241242.html
Copyright © 2011-2022 走看看