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.43\webapps\manager\META-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"

tomcat8 的优化的更多相关文章

  1. tomcat8.5 优化

    第一步:配置user登录tomcat 参考:https://www.cnblogs.com/kevincaptain/p/10370794.html 第二步:性能优化 2.1tomcat的运行模式有3 ...

  2. 【转】史上最强Tomcat8性能优化

    https://blog.csdn.net/ThinkWon/article/details/102744033 文章目录授人以鱼不如授人以渔目的服务器资源Tomcat配置优化Linux环境安装运行T ...

  3. tomcat8性能优化

    在tomcat/catalina.sh中加入下面的配置,内存要根据机器实际情况配置,如果配置内存太大了有可能机器很慢. JAVA_OPTS="-server -Xms512m -Xmx512 ...

  4. tomcat8.5优化配置

    参考文章: https://www.cnblogs.com/steven-snow/p/9262025.html 1.Tomcat内存使用调整 windows系统在bin/catalina.bat文件 ...

  5. tomcat8 JVM 优化

    在Linux环境下设置Tomcat JVM,在/opt/tomcat/bin/catalina.sh文件中找到"# ----- Execute The Requested Command&q ...

  6. tomcat8 性能优化

    一.编辑配置文件:vim /opt/tomcat/conf/server.xml打开默认被注释的连接池配置:默认值: <!-- <Executor name="tomcatThr ...

  7. Request 根据用户输入的信息获取输入到控制台

    html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  8. Tomcat8安装, 安全配置与性能优化(转)

    一.Tomcat 安装 官网:http://tomcat.apache.org/ Tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi 为了便于 ...

  9. Tomcat8安装, 安全配置与性能优化

    一.Tomcat 安装 官网:http://tomcat.apache.org/ Tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi 为了便于 ...

随机推荐

  1. mysql——单表查询——聚合函数——概念

    使用聚合函数查询 group by关键字通常和聚合函数一起使用 .count()函数 count()函数用来统计记录的条数 举例:使用count()函数统计employee表的记录数 select c ...

  2. python 并发编程 协程 协程介绍

    协程:是单线程下的并发,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的 需要强调的是: 1. python的线程属于内 ...

  3. MSF魔鬼训练营-3.1.1信息收集-通过DNS和IP地址挖掘目标网络信息

    情报搜集环境站渗透测试全过程的80%~90%   一.外围信息搜集(公开渠道信息搜集OSINT  open source intelligence) 3.1.1信息收集-通过DNS和IP地址挖掘目标网 ...

  4. java期末考试

    水仙花数 package txt; public class shuixianhua { public static void main(String[] args) { // TODO Auto-g ...

  5. poj2407(欧拉函数模板题)

    题目链接:https://vjudge.net/problem/POJ-2407 题意:给出n,求0..n-1中与n互质的数的个数. 思路:欧拉函数板子题,先根据唯一分解定理求出n的所有质因数p1,p ...

  6. Java 架构师面试题

    基础题目 Java线程的状态 进程和线程的区别,进程间如何通讯,线程间如何通讯 HashMap的数据结构是什么?如何实现的.和HashTable,ConcurrentHashMap的区别 Cookie ...

  7. 03: redis高级

    1.1 布隆过滤器 1.布隆过滤器是什么?(判断某个key一定不存在) 1. 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构 2. 特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存 ...

  8. Python程序结构(sys、os)

    一.Python组成结构 Python程序一般由包package.模块moudle.函数function组成.具体关系如下图:

  9. google浏览器切换成中文

    新浪下载地址:http://down.tech.sina.com.cn/content/40975.html 默认字体好像是西班牙语 1.浏览器地址chrome://settings/language ...

  10. 吴恩达机器学习101:SVM优化目标

    1.为了描述SVM,需要从logistic回归开始进行学习,通过改变一些小的动作来进行支持向量机操作.在logistic回归中我们熟悉了这个假设函数以及右边的sigmoid函数,下式中z表示θ的转置乘 ...