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 folder\bin\catalina.sh",下面,给出这个文件的配置信息,
1
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
2
-server -Xms1024m -Xmx1024m
3
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m
4
-XX:MaxPermSize=512m -XX:+DisableExplicitGC"
-Xms – 指定初始化时化的栈内存
-Xmx – 指定最大栈内存
在重启你的Tomcat服务器之后,这些配置的更改才会有效。下面将介绍如何处理JRE内存泄漏.
第二步 – 解决JRE内存泄露
性能表现不佳的另一个主要原因是内存泄漏,正如我之前说过:始终使用最新的tomcat服务器以获得更好的性能和可伸缩性。现在,这句话变成真的。如果我们使用最新的tomcat版本6.0.26及以上就可以解决这个错误,因为它包含了一个监听器来处理JRE和PermGen的内存泄漏。使用的监听器是,
1
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
你可以在server.xml文件中找到这个监听器的配置,server.xml位置在“tomcat project folder/conf/server.xml”。接下来,我们将看看如何调整连接属性“maxThreads”。
第三步 – 线程池设置
线程池指定Web请求负载的数量,因此,为获得更好的性能这部分应小心处理。可以通过调整连接器属性“maxThreads”完成设置。maxThreads的值应该根据流量的大小,如果值过低,将有没有足够的线程来处理所有的请求,请求将进入等待状态,只有当一个的处理线程释放后才被处理;如果设置的太大,Tomcat的启动将花费更多时间。因此它取决于我们给maxThreads设置一个正确的值。
1
<Connector port="8080" address="localhost"
2
maxThreads="250" maxHttpHeaderSize="8192"
3
emptySessionPath="true" protocol="HTTP/1.1"
4
enableLookups="false" redirectPort="8181" acceptCount="100"
5
connectionTimeout="20000" disableUploadTimeout="true" />
在上述配置中,maxThreads值设定为“250”,这指定可以由服务器处理的并发请求的最大数量。如果没有指定,这个属性的默认值为“200”。任何多出的并发请求将收到“拒绝连接”的错误提示,直到另一个处理请求进程被释放。错误看起来如下,
1
org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) are
2
currently busy, waiting. Increase maxThreads (250) or check the servlet status
如果应用提示上述错误,务必检查上述错误是否是由于单个请求花费太长时间造成的,这个问题的原因是这样的,有时候如果数据库连接不释放的话,进程将不会处理其它请求。
注意: 如果请求的数量超过了“750”,这将不是意味着将maxThreads属性值设置为“750”,它意外着最好使用“Tomcat集群”的多个实例。也就是说,如果有“1000”请求,两个Tomcat实例设置“maxThreads= 500”,而不在单Tomcat实例的情况下设置maxThreads=1000。
根据我的经验,准确值的设定可以通过将应用在在各种环境中测试得出。接下来,我们来看看如何压缩的MIME类型。
第4步- 压缩
Tomcat有一个通过在server.xml配置文件中设置压缩的选项。压缩可以在connector像如下设置中完成,
1
<Connector port="8080" protocol="HTTP/1.1"
2
connectionTimeout="20000"
3
redirectPort="8181" compression="500"
4
compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />
在前面的配置中,当文件的大小大于等于500bytes时才会压缩。如果当文件达到了大小但是却没有被压缩,那么设置属性compression="on"。否则Tomcat默认设置是“off”。接下来我们将看看如何调优数据库。
第五步- 数据库性能调优
Tomcat性能在等待数据库查询被执行期间会降低。如今大多数应用程序都是使用可能包含“命名查询”的关系型数据库。如果是那样的话,Tomcat会在启动时默认加载命名查询,这个可能会提升性能。另一件重要事是确保所有数据库连接正确地关闭。给数据库连接池设置正确值也是十分重要的。我所说的值是指Resource要素的最大空闲数(maxIdle),最大连接数(maxActive),最大建立连接等待时间(maxWait)属性的值。因为配置依赖与应用要求,我也不能在本文指定正确的值。你可以通过调用数据库性能测试来找到正确的值。
第6步 – Tomcat原生库
Tomcat的原生库基于Apache可移植运行时(Apache Portable Runtime简称APR),给程序员提供了超强的扩展性和性能,在产品运作中帮助融合原生的服务器技术以展现最佳的性能。想知道安装说明的朋友请参考Tomcat Native Library – (APR) Installation。
第7步 – 其他选项
这些选项是:
开启浏览器的缓存,这样读取存放在webapps文件夹里的静态内容会更快,大大推动整体性能。
每当开机时,Tomcat服务器应当自动地重启。
一般情况下HTTPS请求会比HTTP请求慢。如果你想要更好的安全性,即使慢一点我们还是要选择HTTPS。
就这么多啦。在这篇文章里,我教给了大家一些提高Tomcat服务器性能的方法。如果你觉得这篇文章有用,或者你对提高Tomcat服务器性能有别的看法,请不要忘记留下宝贵的评论。祝你今天编程愉快!
分享到:
相关推荐
Tomcat是Apache Software Foundation的一款开源Web服务器,广泛应用于Java EE项目中。它的性能优化是提升Java...在生产环境中,合理的优化可以让Tomcat更好地服务于Java EE项目,为用户带来更快的响应和更好的体验。
在实际的生产环境中,Tomcat 使用较少的内存给进程,导致内存溢出问题。这种问题可以通过配置 Tomcat 的配置文件解决,例如在 Windows 下的 catalina.bat 或 Linux 下的 catalina.sh 文件中增加 JVM 堆内存大小。...
【Tomcat生产环境配置与应用 (1)1】 在IT领域,Tomcat是一个广泛使用的Java Web应用程序服务器,它实现了Servlet和JSP规范。本篇主要介绍Tomcat的核心组件认知、`server.xml`配置详解以及自动部署脚本的编写,帮助...
在生产环境中,配置示例如下: ```xml maxThreads="1000" minSpareThreads="100" maxSpareThreads="200" acceptCount="900" disableUploadTimeout="true" connectionTimeout="20000" URIEncoding="UTF-8" ...
- **日志级别**:根据需要调整日志级别,生产环境通常设为`INFO`或`WARN`,以减少日志输出。 4. 部署与监控: 部署优化后的Tomcat,同时利用如Nagios、Zabbix等监控工具,持续监测服务器资源使用情况、请求响应...
6. **关闭JSP开发模式**:在生产环境中,应关闭JSP的开发模式,因为这会导致每次请求都重新编译JSP,增加不必要的负担。切换到部署模式,JSP将只在修改后重新编译。 7. **减少日志输出**:过多的日志输出会影响性能...
标题中的“tomcat-8.0.47”指的是Apache Tomcat服务器的8.0.47版本。Tomcat是一款开源的Java Servlet...同时,了解并熟悉`server.xml`的其他配置项也能帮助你进一步优化Tomcat服务器,提高其在生产环境中的性能表现。
6. **日志和错误处理**:优化日志输出,避免在生产环境中输出详细的调试信息,使用异步日志处理,如Logback或Log4j,可以减少I/O阻塞,提高系统性能。 7. **类加载器优化**:理解Tomcat的类加载机制,避免类加载...
对于那些希望在生产环境中高效稳定地运行Java Web应用的团队而言,对Tomcat进行优化调优是至关重要的。 #### 二、Tomcat性能监控的重要性 性能监控对于任何运行中的系统来说都是至关重要的,尤其是在像Tomcat这样...
虽然本文基于较旧的JDK和Tomcat版本进行了说明,但在实际生产环境中,推荐使用最新稳定版本,以获得更好的性能和安全性。同时,对于大规模或高并发的应用场景,还需进一步优化配置,例如调整JVM参数、启用负载均衡等...
本文将深入探讨Tomcat在生产环境中的应用,包括核心组件认知、server.xml配置详解以及IO模型介绍。 首先,让我们了解Tomcat的架构。Tomcat的架构基于组件设计,每个组件都有其特定的功能,且可以根据需求进行替换,...
在企业级应用服务器的部署与运维过程中,Tomcat作为一款广泛使用的轻量级应用服务器,其性能优化一直是开发人员和系统管理员关注的重点之一。本文将详细介绍一个关于Windows环境下Tomcat优化的具体方案,通过调整JVM...
Tomcat7是Tomcat服务器的一个稳定版本,广泛用于许多生产环境。而Tomcat8则带来了更多改进,包括Servlet 3.1规范的支持,性能优化以及更好的多线程处理能力。因此,Tomcat-Redis-Session-Manager提供对这两个版本的...
8. **部署**:在验证所有功能无误后,将更新的应用程序正式部署到生产环境。 在迁移过程中,还需要注意以下几点: - **安全性**:检查新的Tomcat版本是否包含任何安全更新,并相应地更新应用程序的安全设置。 - **...
另外,根据需求调整Tomcat的配置文件(如`server.xml`)以优化性能。 10. **持续集成与部署**: 最后,将你的项目纳入版本控制系统(如Git),并设置自动化构建工具(如Jenkins、Travis CI)以实现持续集成和部署...
最后,对于生产环境,考虑使用JVM的调优参数,例如调整堆大小(`-Xms`和`-Xmx`),以优化性能。这可以通过修改`bin/catalina.sh`文件中的`JAVA_OPTS`变量实现。 总的来说,Linux上的Tomcat部署涉及到下载、解压、...
阿里云搭建Tomcat和PHP环境一键安装包是一个高效便捷的方法,尤其适合...不过,需要注意的是,虽然一键安装简化了流程,但在生产环境中,还需要考虑安全、性能优化、日志监控等多个方面,确保服务的稳定性和安全性。
- **-server**: 指示JVM运行在server模式,适用于生产环境。 - **-Xms -Xmx**: 设置最小和最大堆内存大小。通常建议两者设置相同,避免JVM在运行时动态调整堆内存大小带来的额外开销。 - **-Xmn**: 设置年轻代的内存...