Tomcat性能优化方案整理
考虑一下这种场景 , 你开发了一个应用 , 它有十分优秀的布局设计 , 最新的特性以及其它的优秀特点 。但是在性能这方面欠缺 , 不管这个应用如何都会遭到客户拒绝 。客户总是期望它们的应用应该有更好的性能 。如果你在产品中使用了Tomcat服务器 , 那么这篇文章就会给你几方面来提升Tomcat服务器的性能 。感谢ITWorld article给本文提供资源 。经过沉思我已经知道了和早期版本相比最新的Tomcat提供更好的性能和稳定性 。所以一直使用最新的Tomcat版本 。现在本文使用下面几步来提高Tomcat服务器的性能 。
- 增加JVM堆内存大小
- 修复JRE内存泄漏
- 线程池设置
- 压缩
- 数据库性能调优
- Tomcat本地库
- 其它选项
第一步 – 提高JVM栈内存Increase JVM heap memory
你使用过tomcat的话 , 简单的说就是“内存溢出”. 通常情况下 , 这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过配置Tomcat的配置文件(windows 下的catalina.bat或linux下的catalina.sh)可以解决这种问题.这种解决方法是通过增加JVM的栈内存实现的.也就是说 , JVM通常不去调用垃圾回收器 , 所以服务器可以更多关注处理web请求 , 并要求尽快完成 。要更改文件(catalina.sh) 位于"tomcat server folderbincatalina.sh" , 下面 , 给出这个文件的配置信息 ,
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m -Xmx1024m-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m-XX:MaxPermSize=512m -XX:+DisableExplicitGC"
-Xms – 指定初始化时化的栈内存-Xms – 指定初始化时化的栈内存-Xmx – 指定最大栈内存在重启你的Tomcat服务器之后 , 这些配置的更改才会有效 。下面将介绍如何处理JRE内存泄漏.
第二步 – 解决JRE内存泄露
性能表现不佳的另一个主要原因是内存泄漏 , 正如我之前说过:始终使用最新的tomcat服务器以获得更好的性能和可伸缩性 。现在 , 这句话变成真的 。如果我们使用最新的tomcat版本6.0.26及以上就可以解决这个错误 , 因为它包含了一个监听器来处理JRE和PermGen的内存泄漏 。使用的监听器是 ,
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
你可以在server.xml文件中找到这个监听器的配置 , server.xml位置在“tomcat project folder/conf/server.xml” 。接下来 , 我们将看看如何调整连接属性“maxThreads” 。第三步 – 线程池设置
线程池指定Web请求负载的数量 , 因此 , 为获得更好的性能这部分应小心处理 。可以通过调整连接器属性“maxThreads”完成设置 。maxThreads的值应该根据流量的大小 , 如果值过低 , 将有没有足够的线程来处理所有的请求 , 请求将进入等待状态 , 只有当一个的处理线程释放后才被处理;如果设置的太大 , Tomcat的启动将花费更多时间 。因此它取决于我们给maxThreads设置一个正确的值 。
<Connector port="8080" address="localhost"maxThreads="250" maxHttpHeaderSize="8192"emptySessionPath="true" protocol="HTTP/1.1"enableLookups="false" redirectPort="8181" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" />
在上述配置中 , maxThreads值设定为“250” , 这指定可以由服务器处理的并发请求的最大数量 。如果没有指定 , 这个属性的默认值为“200” 。任何多出的并发请求将收到“拒绝连接”的错误提示 , 直到另一个处理请求进程被释放 。错误看起来如下 , org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) arecurrently busy, waiting. Increase maxThreads (250) or check the servlet status
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 阿里云服务器购买配置SSL证书全过程
- Linux的/etc/init.d详解
- 利用什么可以制作小程序?微信小程序详解
- Nginx服务器的六种负载均衡策略详解
- Docker配置阿里云镜像服务
- 现代家装风水禁忌详解
- 防火墙入门基础之登录Web配置界面,看完小白也可配置,超简单
- 金三银四网络面经之 DNS 详解
- 我仅用10步,就写出了全网最全的微服务架构详解
- 安卓漏洞 CVE 2017-13287 复现详解