tomcat性能优化,内存优化和并发线程连接优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了tomcat性能优化,内存优化和并发线程连接优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2556字,纯文字阅读大概需要4分钟。
内容图文
![tomcat性能优化,内存优化和并发线程连接优化](/upload/InfoBanner/zyjiaocheng/1263/0968c9fb9b5e440a86ca1c99cd42ad40.jpg)
今天被一同事问到tomcat和内存优化的问题,而网上的资料基本都是来回copy,所以抽时间随便写点。文章中设置的参数都是一个随便写的,具体的还要根据自己的情况来定。
1.内存优化:
说到tomcat不得不提的是jvm,想让tomcat跑起来就必须有jvm,而jdk又是自带jvm,所以安装了jdk就可以让tomcat跑起来,而tomcat跑起来要想jvm申请内存空间。这里就是要讲的内存优化。而要想优化内存,就必须了解tomcat的启动过程。
很多人都是从了解startup.bat(linux系统上使用start.sh)开始的。是的,我开始也是这样的。但是当你用编辑器打开脚本文件,看过源码之后你会发现,在这个文件里其实又调用了catalina.bat脚本文件。在这个文件里面有关于java相关的配置,比如:
当然如果从被注释掉的部分也可以看出来。更重要的是,被注释掉的部分里面包含了关于申请java内存的相关信息。
所以,tomcat内存优化,通过修改tomcat安装目录下bin文件夹下的catalina.bat(catalina.sh)文件来实现。
具体实现方法:
a.windows平台在catalina.bat文件的@echo off下追加
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
这就是简单的实现分配内存了。更详细的jvm内存参数方面的知识,我会再抽时间给大家讲讲。今天就不在此多说了。
b.linux平台可直接在catalina.sh文件的开头追加
JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"
当然,这些都不是必须的,每个人都有自己的做法。如果不在catalina文件加入内存信息的配置,也可以在每次启动的时候带上这些参数,当然这是一种很麻烦的方式,所以我选择了直接pass。
2.线程优化和高并发
线程优化是通过修改安装目录下conf文件夹下的server.xml文件来实现的。具体做法就是修改文件中
<Connector .../>标签内的内容,通过修改里面的参数及配置来实现。
简单的配置如下:
<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectTimeout="60000"
keepAliveTimeout="15000"
maxKeepAliveRequests="1"
redirectPort="443"
maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>
参数说明:
connectionTimeout - 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。
maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间)
maxHttpHeaderSize - http请求头信息的最大程度,超过此长度的部分不予处理。一般8K。
URIEncoding - 指定Tomcat容器的URL编码格式。
maxThreads - 最多同时处理的连接数,Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可 创建的最大的线程数。
acceptCount - 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认值可以自己查看源码。可以将此项当做一个等待队列。比如设置了1000,也就是说当线程数超过maxThreads之后的线程,都将放到此队列中。
maxThreads 和acceptCount 这两个值如何起作用,请看下面三种情况
情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。
情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。
情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refused
disableUploadTimeout - 上传时是否使用超时机制
enableLookups - 是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
bufferSize - 缓存大小
maxSpareThreads - 最多空闲连接数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程
minSpareThreads - 最小空闲线程数,Tomcat初 始化时创建的线程数
minProcessors - 最小空闲连接线程数,用于提高系统处理性能,
maxProcessors - 最大连接线程数,即:并发处理的最大请求数
关于protocal方面的知识,网上写的还是比较详细的,大家可以自行搜索关于apr bio nio的相关文档,这里就不再做介绍。
---------------------
作者:bebmwnz
来源:CSDN
原文:https://blog.csdn.net/bebmwnz/article/details/89968824
版权声明:本文为博主原创文章,转载请附上博文链接!
原文:https://www.cnblogs.com/pztc/p/10836083.html
内容总结
以上是互联网集市为您收集整理的tomcat性能优化,内存优化和并发线程连接优化全部内容,希望文章能够帮你解决tomcat性能优化,内存优化和并发线程连接优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。