`
sbl2255
  • 浏览: 221768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat 生产服务器性能优化-转

    博客分类:
  • jdk
 
阅读更多

第一步  – 提高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",下面,给出这个文件的配置信息

 

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 – 指定初始化时化的栈内存

-Xmx – 指定最大栈内存

在重启你的Tomcat服务器之后,这些配置的更改才会有效。

 

第二步 – 解决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) are

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像如下设置中完成

 

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8181" compression="500" compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />

在前面的配置中,当文件的大小大于等于500bytes时才会压缩。如果当文件达到了大小但是却没有被压缩,那么设置属性compression="on"。否则Tomcat默认设置是“off”。接下来我们将看看如何调优数据库。

 

 

分享到:
评论

相关推荐

    tomcat-redis-session-manager-1.2-tomcat-7-java-7

    标题中的"tomcat-redis-session-manager-1.2-tomcat-7-java-7"表明这是一个针对Tomcat服务器,用于管理session的组件,版本为1.2,适配Tomcat 7和Java 7环境。这个组件的主要作用是将Tomcat的会话管理功能与Redis...

    tomcat-redis-session-manager的jar包-包含Tomcat7和Tomcat8

    Tomcat7是Tomcat服务器的一个稳定版本,广泛用于许多生产环境。而Tomcat8则带来了更多改进,包括Servlet 3.1规范的支持,性能优化以及更好的多线程处理能力。因此,Tomcat-Redis-Session-Manager提供对这两个版本的...

    tomcat9+tomcat-cluster-redis-session-manager_4.0.zip

    首先,Tomcat 9是Apache Tomcat服务器的一个版本,它是Java EE Web应用程序的轻量级容器。这个版本引入了诸多新特性,包括对Java EE 8的支持,性能优化,以及更好的安全性。"apache-tomcat-9.0.36-windows-x64.zip...

    tomcat-redis-session-manager

    这是一个开源项目,它允许Tomcat服务器将用户的session数据持久化到Redis数据库中,而不是传统的内存或本地硬盘。这样,无论用户访问哪个服务器节点,都能获取到正确的session信息,从而实现负载均衡下的会话持久性...

    tomcat-redis-session-manager包集合下载(tomcat8)

    【标题】"tomcat-redis-session-manager包集合下载(tomcat8)"涉及的主要知识点是将Redis集成到Tomcat中管理会话(session),以提高Web应用的性能和可扩展性。 【描述】中提到的"所需的tomcat-redis-session-...

    tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x

    在这个版本的连接器中,可能会包含一些针对性能优化的改进,新的安全补丁,或者其他功能更新,以增强与Apache HTTPD的协同工作能力。 压缩包内的文件"tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x"可能是...

    tomcat-redis-session-manager jar包

    2. **性能优化**:根据实际负载调整Redis配置,例如设置合理的缓存淘汰策略,避免内存溢出。 3. **监控与报警**:定期监控Redis和Tomcat的运行状态,设置合适的性能指标阈值,以便在出现问题时及时收到警告。 通过...

    tomcat-redis-session-manager-1.2-tomcat-6&7

    标题 "tomcat-redis-session-manager-1.2-tomcat-6&7" 指的是一个用于在Tomcat服务器中集成Redis作为session管理器的组件。这个组件使得Web应用程序可以利用Redis分布式缓存系统来存储和管理用户的会话数据,从而...

    Tomcat8亲测可用 tomcat-redis-session-manager的jar包

    这个组件实现了将Tomcat应用服务器中的用户session数据存储到Redis分布式缓存系统中,以提高系统的可伸缩性和性能。Redis是一个高性能的键值数据库,常被用来作为缓存服务,因其速度快、数据持久化等特点,非常适合...

    tomcat-redis-session-manager-2.0.0.zip

    4. **性能优化**: 使用了高效的序列化和反序列化策略,比如Java的`java.io.Serializable`接口,或者更高级的Google Protobuf,以减少数据转换的开销。 5. **故障恢复**: 当Redis服务出现故障时,`tomcat-redis-...

    tomcat-connectors-1.2.48-src

    《深入理解Tomcat连接器:剖析tomcat-connectors-1.2.48-src源码》 ...通过源码分析,我们可以学习到更多关于网络请求处理、服务器通信以及性能优化的实践知识,这对于提升Web应用的效率和稳定性至关重要。

    tomcat-redis-session-manager实现session共享 配置文件

    2. **性能优化**:可以调整Redis的配置,如缓存策略、过期策略等,以适应高并发场景。 3. **监控与报警**:监控Redis和Tomcat的Session操作,设置报警阈值,以便在出现问题时能及时发现。 通过以上介绍,我们了解...

    apache-tomcat-9.0.21-windows-x64.zip

    Tomcat 9.0系列是Tomcat服务器的一个重要版本,它引入了许多新特性、改进和优化。以下是对这个版本的一些关键知识点的详细说明: 1. **JDK 1.8支持**:Tomcat 9.0.21明确表示支持JDK 1.8,这意味着它可以利用Java 8...

    apache-tomcat-8.5.47-windows-x64.zip

    7. **性能优化** 为了提升性能,可以考虑调整Tomcat的线程池大小、JVM内存设置、开启GZIP压缩等。此外,还可以通过调整JVM的垃圾回收策略和使用数据缓存来提高响应速度。 综上所述,Apache Tomcat 8.5.47在Windows...

    apache-tomcat-8.0.47-windows-x64.zip 【Tomcat服务器,Tomcat8 windows 64位版】

    Tomcat8是其8.x版本系列中的一个发行版,提供了许多性能优化和新特性。在这个"apache-tomcat-8.0.47-windows-x64.zip"压缩包中,您将获得的是专为Windows 64位操作系统设计的Tomcat服务器。 首先,让我们详细了解...

    apache-tomcat-8.5.64-windows-x64.zip

    8. **性能优化**:可以通过调整`server.xml`中的线程池设置、启用NIO连接器、增加JVM堆大小等方式优化Tomcat性能。 9. **集成其他应用服务器**:Tomcat可以与其他Java EE服务器(如JBoss、WebLogic)一起使用,作为...

    apache-tomcat-9.0.2-windows-x64

    8. **性能优化**: 对于64位系统,可以调整Tomcat的JVM参数以优化内存分配,例如设置-Xms和-Xmx来控制堆内存大小。此外,还可以通过调整线程池大小、开启NIO或多线程模式来提升性能。 9. **日志与调试**: Tomcat的...

    tomcat-connectors-1.2.32-src.tar.gz

    1. 负载均衡:通过修改workers.properties文件中的worker列表,可以实现多台Tomcat服务器的负载均衡。 2. 性能调整:可以通过调整AJP连接器的参数,如maxThreads、minSpareThreads等,优化性能。 3. 日志监控:启用...

    apache-tomcat-7.0.63-windows-x64.zip

    1. `bin`:包含可执行文件,如`catalina.bat`用于启动和停止Tomcat服务器,`startup.bat`和`shutdown.bat`用于启动和关闭服务。 2. `conf`:包含服务器配置文件,如`server.xml`(全局配置)、`tomcat-users.xml`...

    最新版windows apache-tomcat-8.5.69-windows-x64.zip

    在性能方面,Tomcat 8.5.69通过优化内部处理机制和错误修复,提升了服务器响应速度和并发处理能力。特别是对于高流量和大型企业级应用,这些改进能显著提高系统的整体性能。此外,它还加强了安全性,修复了多个安全...

Global site tag (gtag.js) - Google Analytics