发表文章

[最新] tomcat优化那点事

weixin38289303 25天前 71

1. 相关参数解释:

a.  <Connector>标签内的属性:

port: 端口设置

connectionTimeout:请求超时

protocol:协议控制

redirectPort: http请求时,SSL请求过来重定向的端口 

minProcessors:服务器器启动时,处理请求的线程数

maxProcessors:处理请求的最大线程数

minSpareThreads:初始线程数

maxSpareThreads:最大空闲书

maxThread:用于处理请求的最大处理线程数。(默认:200)

enableLookups:本地DNS查询。(false优化)

acceptCount:当处理请求的所有线程使用时,可以放在处理队列中的最大请求数(默认:100)

b.  <Executor>线程池标签相关属性:

namePrefix: 线程池中线程的命名前缀

maxThreads: 线程池的最大线程数

minSpareThreads: 线程池的最小空闲数

maxIdleTime: 超过最小空闲线程数是,多的线程会等待的时间长度。(时间达到时,会关闭)

threadPriorty:线程优先级

c.  内存设置相关参数:

• -server:启用jdk的server版本。

• -Xms:虚拟机初始化时的最小堆内存。

• -Xmx:虚拟机可使用的最大堆内存。 #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落

• -XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。

• -XX:MaxNewSize:新生代占整个堆内存的最大值。

• -XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。
2. 具体配置:

catalina.sh内存设置:
JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128M -XX:MaxPermSize=256M"

server.xml中相关线程设置:
<Executor name="tomcatThreadPool" namePrefix="req-exec-"maxThreads="1000" minSpareThreads="50"maxIdleTime="60000"/>
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443"acceptCount="500" maxThreads="400" />

三种模式比较:
1)BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下在Linux系统中默认使用这种方式。
2)NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动(conf/server.xml配置文件):
<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443"/>
3)APR(Apache Portable Runtime):从操作系统层面解决io阻塞问题。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

 

相关推荐
最新评论 (0)
返回
发表文章
weixin38289303
文章数
14
评论数
0
注册排名
1190574