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.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 的优化的更多相关文章
- tomcat8.5 优化
第一步:配置user登录tomcat 参考:https://www.cnblogs.com/kevincaptain/p/10370794.html 第二步:性能优化 2.1tomcat的运行模式有3 ...
- 【转】史上最强Tomcat8性能优化
https://blog.csdn.net/ThinkWon/article/details/102744033 文章目录授人以鱼不如授人以渔目的服务器资源Tomcat配置优化Linux环境安装运行T ...
- tomcat8性能优化
在tomcat/catalina.sh中加入下面的配置,内存要根据机器实际情况配置,如果配置内存太大了有可能机器很慢. JAVA_OPTS="-server -Xms512m -Xmx512 ...
- tomcat8.5优化配置
参考文章: https://www.cnblogs.com/steven-snow/p/9262025.html 1.Tomcat内存使用调整 windows系统在bin/catalina.bat文件 ...
- tomcat8 JVM 优化
在Linux环境下设置Tomcat JVM,在/opt/tomcat/bin/catalina.sh文件中找到"# ----- Execute The Requested Command&q ...
- tomcat8 性能优化
一.编辑配置文件:vim /opt/tomcat/conf/server.xml打开默认被注释的连接池配置:默认值: <!-- <Executor name="tomcatThr ...
- Request 根据用户输入的信息获取输入到控制台
html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Tomcat8安装, 安全配置与性能优化(转)
一.Tomcat 安装 官网:http://tomcat.apache.org/ Tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi 为了便于 ...
- Tomcat8安装, 安全配置与性能优化
一.Tomcat 安装 官网:http://tomcat.apache.org/ Tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi 为了便于 ...
随机推荐
- IDEA 如何批量修改变量名
修改前的变量 System.out.println("bbbbb"); System.out.println("bbbbb"); System.out.prin ...
- 第六次学习总结&&第四次实验总结
Java实验报告 班级 1班 学号 20188390 姓名 宋志豪 实验四 类的继承 1.实验目的 (1)掌握类的继承方法: (2)变量的继承和覆盖,方法的继承.重载和覆盖实现: 2.实验内容 实验代 ...
- MyBatis一级缓存的笔记及记录
精髓内容来源于<图灵学院> 一.概述: 一级缓存是MyBatis天然自带的,是默认开启且没有关闭的地方,1级缓存只能作用于查询回话中,所以也叫会话缓存: 这里举个例子: 订单表存在一对多的 ...
- 洛谷 P3919 可持久化线段树 题解
题面 这题好水的说~很明显就是主席树的大板子 然而我交了3遍才调完所有的BUG,开好足够的数组,卡掉大大的常数: 针对与每次操作,change()会创建新节点,而ask()虽然也会更新左右儿子的节点编 ...
- PythonDay14
第十四章装饰器 装饰器 # 开放封闭原则- 1.对扩展是开放的- 2.对修改是封闭的# 在不修改源代码和调用方式的情况下,对函数进行扩展# 第一版装饰器def times(func): def ...
- Java基础——Modifier类
转自:https://www.cnblogs.com/baiqiantao/p/7478523.html 反射 Reflect Modifier 修饰符工具类 在查看反射相关的Class.Fiel ...
- docker安装应用
1.docker安装oracle docker search oracle docker pull wnameless/oracle-xe-11g docker run -d -p 9090:8080 ...
- zookeeper核心知识与投票机制详解
Zookeeper数据模型与session机制:zookeeper的数据模型有点类似于文件夹的树状结构,每一个节点都叫做znode,每一个节点都可以有子节点和数据,就好像文件夹下面可以有文件和子文件夹 ...
- mysql复制表结构,复制表数据
MYSQL 复制表 show create table table_name:查看表的建表语句.该语句包含了原数据表的结构,索引等. 使用 SHOW CREATE TABLE 命令获取创建数据表(CR ...
- 使用CXF开发WebService程序的总结(六):结合拦截器使用
1. 使用CXF提供的拦截器 拦截器在我看来分为两端两向,两端分为:客户端和服务端,两向(方向)分为:进(in)和出(out),即大致四类拦截器. 在这里利用cxf提供的 日志拦截器举例 1.1 在服 ...