tomcat性能优化参数
线上环境使用默认tomcat配置文件,性能很一般,为了满足大量用户的访问,需要对tomcat进行参数性能优化,具体优化的地方如下:
- Linux内核的优化
- 服务器资源JVM 配置的优化
- Tomcat参数优化
- Tomcat配置连接器
- 配置负载集群优化
这里着重讲解tomcat参数的优化:server.xml文件,关闭DNS查询、配置最大并发等参数。
maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。
1,vim /usr/local/tomcat/conf/server.xml 优化http 8080访问端口段加入以下优化,再把默认的删掉
真实企业也是一下的参数 不变
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="5000"
minSpareThreads="20"
acceptCount="1000"
disableUploadTimeout="true"
enableLookups="false"
URIEncoding="UTF-8" />

2,Catalina.sh JVM 参数优化,java系统内存优化 ,根据自己虚拟机得内存来优化一下Xms
Xmx Xmn的参数 这里配置的内存不要太大一般位置系统内存的3/1 真实企业系统内存最低要留2个G 其中Xmn为Xmx内存的4/1
如果不配置优化jvm tomcat默认是502
参数添加位置 如下: 其中参数一般有开发人员来配置算出最优值

添加如下内容:vim /usr/local/tomcat/bin/ catalina.sh
CATALINA_OPTS="$CATALINA_OPTS –Xms1024M –Xmx1024M –Xmn512M -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=82 -DLOCALE=UTF-16LE -DRAMDISK=/ -DUSE_RAM_DISK=ture -DRAM_DISK=true
3,优化server.conf配置文件
|
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" //最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断 minSpareThreads="100" //Tomcat 初始化时创建的线程数,默认设置 25 prestartminSpareThreads = "true"//在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就无效 maxQueueSize = "100"//最大的等待队列数,超过则拒绝请求 /> <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" //Tomcat 8 设置 nio2 更好,Tomcat 6 、7设置nio更好:org.apache.coyote.http11.Http11NioProtocol connectionTimeout="20000" minSpareThreads="100" maxSpareThreads="1000"最大处理连接数线程 minProcessors="100“同时处理请求的最小数 maxProcessors=“1000”同时处理请求的最大数 maxConnections="1000" redirectPort="8443" enableLookups="false" //禁用DNS查询 acceptCount="100" //指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100 maxPostSize="10485760" //以 FORM URL 参数方式的 POST 提交方式,限制提交最大的大小,默认是2097152(2兆),它使用的单位是字节。10485760 为 10M。如果要禁用限制,则可以设置为 -1。 compression="on" disableUploadTimeout="true" compressionMinSize="2048" acceptorThreadCount="2" //用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核CPU一般配置为 2. compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/ja vascript" URIEncoding="utf-8" keepAliveTimeout="0" 关闭shutdown端口:<Server port="-1" shutdown="SHUTDOWN"> 关闭ajp连接:注释<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 取消访问日志Valve阀门 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> /> |
4,tomcat配置连接器
Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式
bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作(即Java.io包及其子包)。 一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。默认的模式,性能最差,没有经过任何优化处理和支持。
=============================================================================
nio(non-blocking I/O),java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Javanio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。拥有比传统I/O操作(bio)更好的并发运行性能。利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。
#查看日志默认 tail -10 catalina.out
18-Jun-2019 05:30:31.727 INFO [main] org.apache.coyote.AbstractProtocol.start StartingProtocolHandler ["http-nio-8080"]
=============================================================================
apr(apache Portable Runtime/Nginx可移植运行时库),Tomcat将以JNI的形式调用apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。从操作系统级别来解决异步的IO问题,大幅度的提高性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。#修改默认模式为apr模式,Apr 效率最高
要让Tomcat以apr模式来运行,必须安装apr和native
安装apr:
yum -y install apr apr-devel gcc-c++
安装native:
cd /usr/local/tomcat/bin/
wget -c http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.21/source/tomcat-native-1.2.21-src.tar.gz
tar xzfv tomcat-native-1.2.21-src.tar.gz
cd /usr/local/tomcat/bin/tomcat-native-1.2.21-src/native
./configure --with-apr=/usr/bin/apr-1-config#编译之前需要提前部署java 环境
make && make install
整合Tomcat apr:
设置环境变量
方法:在/etc/profile中加入:
export CATALINA_OPTS=-Djava.library.path=/usr/local/apr/lib
source /etc/profile
修改配置文件:vim tomcat/conf/server.xml
修改以下内容:
修改protocol的值为org.apache.coyote.http11.Http11NioProtocol
<Connector port=“8080” protocol=“org.apache.coyote.http11.Http11AprProtocol”
connectionTimeout=“20000”
redirectPort=“8443” />#查看日志默认 tail -10 catalina.out
18-Jun-2019 05:57:04.550 INFO [main] org.apache.coyote.AbstractProtocol.start Starting
ProtocolHandler ["http-apr-8080"]
5,配置多个tomcat实例,方法也很简单,只需要在服务器上cp多个tomcat,然后修改三个端口和发布目录即可,然后分别启动即可。
为了提升整个网站的性能,还需要在tomcat前面架设nginx web反向代理服务器,用以提高用户高速访问。
tomcat性能优化参数的更多相关文章
- tomcat 性能优化
tomcat 性能优化tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. tomcat内存优化linux修改TOMCAT_HOME/bin/ ...
- Tomcat性能优化(转载)
出处:微信订阅号GitChat精品课程 — Tomcat性能优化 Tomcat 简单介绍 Sun 公司创建了第一个 Servlet 容器,即 Java Web Server,但 JWS 只是为了演示 ...
- tomcat 性能优化(内存优化 线程优化)
转自:http://blog.sina.com.cn/s/blog_4b5bc01101014s81.html tomcat 性能优化 linux修改TOMCAT_HOME/bin/catalina. ...
- JVM虚拟机详解+Tomcat性能优化
1.JVM(java virtual mechinal) ()JVM有完善的硬件架构,如处理器.堆栈.寄存器当,还具有相应的指令系统. ()JVM的主要工作时解释自己的指令集(即字节码),并映射到本地 ...
- tomcat性能优化梳理
tomcat性能优化 Tomcat本身优化 Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 jav ...
- Tomcat性能优化之(一) 启动GZIP压缩
Tomcat性能优化之(一) 启动GZIP压缩 1:设置TOMCAT启用GZIP压缩,通过浏览器HTTP访问对应的资源会根据配置进行压缩. <Connector port="8080& ...
- 闲谈Tomcat性能优化
Tomcat在各位JavaWeb从业者常常就是默认的开发环境,但是Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好Tomcat还有很多的提升空间.下文介 ...
- tomcat 性能优化(转)
tomcat nginx默许的post大小限制 tomcat nginx默认的post大小限制执行大文件上传,或者,大数据量提交时,当提交的数据大小超过一定限制时,发现后台从request取值的代码r ...
- Tomcat性能优化及JVM内存工作原理
Java性能优化原则:代码运算性能.内存回收.应用配置(影响Java程序主要原因是垃圾回收,下面会重点介绍这方面) 代码层优化:避免过多循环嵌套.调用和复杂逻辑. Tomcat调优主要内容如下: 1. ...
随机推荐
- GreenPlum 锁表以及解除锁定
最近遇到truncate表,无法清理的情况,在master节点查看加锁情况,并未加锁这种情况极有可能是segment节点相关表加了锁,所以遇到这种情况除了排查master节点的锁,所有的segment ...
- P3410 拍照
漂亮小姐姐点击就送:https://www.luogu.org/problemnew/show/P3410 题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一 ...
- 初步学习MySQL
我们之前学习如何安装MySQL数据库 以及 navicat 管理数据库可视化工具 那么现在主要来学习一下如何使用,(操作数据库有很多方式,终端操作.可视化工具操作.编程语句操作) 我们首先学习在终端操 ...
- Java学习日记基础篇(九) —— 集合框架,泛型,异常
集合框架 有事我们会需要一个能够动态的调整大小的数组,比如说要添加新员工但是数组已经满了,并且数组的大小是在定义的时候定死的,所以我们就需要一个能够动态调整大小的数组或者用链表解决,而java中提供了 ...
- 【转载】Hadoop集群各部分常用端口号
hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问.而随着hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如 ...
- FLUENT多相流问题后处理中如何显示其中一相的分布【转载】
转载自:http://blog.sina.com.cn/s/blog_6a5314cf0100tnsz.html 多相流问题后处理中很容易显示相界面在某些面上的形态,如图1所示.其实利用ISO-Cli ...
- JAVA基础知识|Serializable
一.序列化和反序列化 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 将内存中对象的信息保存下来,可以有很多种方式实现这一功能.其中ja ...
- linux下 安装 ImageMagick 及其 php imagick扩展(转)
linux下 安装 ImageMagick 及其 php imagick扩展 PHP版本7.1.3 : ImageMagick版本 ImageMagick-7.0.8-3: PHP扩展imagick版 ...
- Windows008 snmp
- 临界区代码 critical section Locks and critical sections in multiple threads
临界区 在同步的程序设计中,临界区段(Critical section)指的是一个访问共享资源(例如:共享设备或是共享存储器)的程序片段,而这些共享资源有无法同时被多个线程访问的特性. 当有线程进入临 ...