`

java系统性能调优--tomcat

 
阅读更多

1、优化tomcat内存

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。

常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的使用内存即可解决此问题。
Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m
Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’
其中,-Xms设置初始化内存大小,-Xmx设置可以使用的最大内存。

如果查看日志,发现错误提示:java.lang.OutOfMemoryError: PermGen space
原因:PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法:在catalina.bat的第一行增加:
set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
在catalina.sh的第一行增加:
JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

2、Tomcat连接数设置

在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。Unix中如何设置这些参数,请参阅Unix常用监控和管理命令。
这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。

<Connector port="8080"  
           protocol="org.apache.coyote.http11.Http11NioProtocol" 
           connectionTimeout="20000" 
           redirectPort="8443"  
           maxThreads="500"  
           minSpareThreads="20" 
           acceptCount="100"
           disableUploadTimeout="true"
           enableLookups="false"  
           URIEncoding="UTF-8" />

上面两个方法是最常用的,如果依然不行,再尝试下面的办法



3、去掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存



4、服务器资源
  服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
  (1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。
  (2) 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降。
  (3) 硬盘主要问题就是读写性能,当大量文件进行读写时,磁盘极容易成为性能瓶颈。最好的办法还是利用下面提到的缓存。


5、利用缓存和压缩
  对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
  另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
  除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。


6、采用集群
  单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。当然如果使用redis手动管理session那就更好了。


以上步骤,主要针对架构和代码优化难以进行地老项目,操作的复杂性逐渐递增,建议按照顺序尝试。

如果是新项目,开发之初就应该考虑性能设计

来源:http://lib.csdn.net/article/javaweb/6141

分享到:
评论

相关推荐

    Tomcat性能调优

    ### Tomcat性能调优 #### 一、Tomcat设置Gzip,减少网络流量 Gzip是一种常见的压缩方式,用于减少HTTP响应数据的体积,从而降低网络传输时间,提高Web应用的响应速度。在Tomcat中启用Gzip压缩,可以通过修改`...

    J2EE应用性能调优.docx

    性能调优是一个针对软件系统进行的持续改进过程,旨在提高系统的效率、响应速度和资源利用率。在J2EE应用中,性能问题可能导致用户体验下降,甚至影响整个系统的稳定性和可扩展性。性能调优的目标是识别并解决这些...

    学习juc、nio、netty、tomcat调优、jvm调优-Advanced-JAVA.zip

    本资料主要涵盖了五个核心领域:Java并发(JUC)、非阻塞I/O(NIO)、Netty框架、Tomcat服务器优化以及Java虚拟机(JVM)调优。以下是这些主题的详细说明: 1. **Java并发(JUC - Java Concurrency Utilities)** ...

    Java性能调优 6步实现项目性能全面升级+面试高频性能问题讲解.rar

    Java性能调优 6步实现项目性能全面升级+面试高频性能问题讲解视频教程分享,性能优化的N种企业级解决方案,囊括了【数据库优化】、【Tomcat优化】、【JVM优化】、【垃圾回收】、【Netty优化】、【Nginx优化】、...

    Tomcat性能调优方案

    一、操作系统调优 二、Java虚拟机调优 三、Apache集成Tomcat 四、Apache和Tomcat集群 五、Tomcat自身优化 六、APR库使用

    Tomcat JVM调优-TomcatJVM.zip

    Tomcat作为Java Web容器,其性能很大程度上取决于JVM的配置。 二、JVM内存配置 1. 堆内存设置:Java堆是JVM的主要内存区域,用于存放对象实例。合理的堆大小设置可以避免频繁的垃圾回收和内存溢出问题。通常,可以...

    Tomcat优化-Tomcat 的性能调优的原理和方法

    由于Tomcat的运行高度依赖于Java虚拟机(JVM),我们可以将其性能调优大致分为两大类:**外部环境调优**与**自身调优**。 ##### 2.1 外部环境调优 外部环境调优主要涉及调整Tomcat运行环境的操作系统参数以及运行...

    apache-tomcat-9.0-windows-x64.zip 内置64位的三个版本尽情使用 吧少年

    9. **性能调优**: 为了获得最佳性能,可能需要调整Tomcat的JVM参数,如-Xms和-Xmx设置初始和最大堆内存,-XX:MaxPermSize设定永久代大小,以及其他GC相关的参数。 10. **集群与负载均衡**: 对于高可用性和负载均衡...

    tomcat7 优化 性能调优

    ### Tomcat7 优化与性能调优 #### 一、引言 在现代Web应用开发中,Apache Tomcat因其轻量级、灵活且易于部署的特点成为开发者们的首选应用服务器之一。然而,在面对高并发访问场景时,如何有效地优化Tomcat以提高...

    202310-Tomcat面试题(2023最新版)思维导图.zip

    - Tomcat调优 - 数据库调优 10. 安全: - XSS、CSRF、SQL注入等常见安全漏洞 - Spring Security安全框架 以上是Java后端必会的所有技能,掌握这些技能可以帮助开发人员在Java后端开发领域更加得心应手。

    apache-tomcat-7.0.96

    - 使用JMX(Java Management Extensions)监控Tomcat的运行状态,进行性能调优。 - 关闭不必要的服务和模块,减少内存占用。 8. **故障排查与升级**: - 当遇到问题时,检查日志、堆栈跟踪和服务器状态信息。 -...

    apache-tomcat-7.0.103.tar.gz

    以上是对"apache-tomcat-7.0.103.tar.gz"的详细介绍,涵盖了安装、配置、应用部署、安全管理、日志管理、性能调优以及监控和故障排查等多个方面。理解并掌握这些知识点,将有助于你有效地管理和维护基于Tomcat的Java...

    apache-tomcat-7.0.63-windows-x64.zip

    `apache-tomcat-7.0.63-windows-x64.zip`是一个用于在64位Windows环境下运行Java Web应用的服务器包。了解其结构、配置和操作方法对于Java开发人员来说至关重要,它为开发和部署基于Java的Web应用提供了基础平台。

    apache-tomcat-8.5.16.tar.gz

    - 下载:首先,你需要从Apache官方网站下载"apache-tomcat-8.5.16.tar.gz"压缩文件。 - 解压:使用`tar -zxvf apache-tomcat-8.5.16.tar.gz`命令将其解压到所需的目录。 - 配置环境变量:设置CATALINA_HOME环境...

Global site tag (gtag.js) - Google Analytics