`
- 浏览:
12109 次
-
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
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Tomcat性能调优 #### 一、Tomcat设置Gzip,减少网络流量 Gzip是一种常见的压缩方式,用于减少HTTP响应数据的体积,从而降低网络传输时间,提高Web应用的响应速度。在Tomcat中启用Gzip压缩,可以通过修改`...
性能调优是一个针对软件系统进行的持续改进过程,旨在提高系统的效率、响应速度和资源利用率。在J2EE应用中,性能问题可能导致用户体验下降,甚至影响整个系统的稳定性和可扩展性。性能调优的目标是识别并解决这些...
本资料主要涵盖了五个核心领域:Java并发(JUC)、非阻塞I/O(NIO)、Netty框架、Tomcat服务器优化以及Java虚拟机(JVM)调优。以下是这些主题的详细说明: 1. **Java并发(JUC - Java Concurrency Utilities)** ...
Java性能调优 6步实现项目性能全面升级+面试高频性能问题讲解视频教程分享,性能优化的N种企业级解决方案,囊括了【数据库优化】、【Tomcat优化】、【JVM优化】、【垃圾回收】、【Netty优化】、【Nginx优化】、...
一、操作系统调优 二、Java虚拟机调优 三、Apache集成Tomcat 四、Apache和Tomcat集群 五、Tomcat自身优化 六、APR库使用
Tomcat作为Java Web容器,其性能很大程度上取决于JVM的配置。 二、JVM内存配置 1. 堆内存设置:Java堆是JVM的主要内存区域,用于存放对象实例。合理的堆大小设置可以避免频繁的垃圾回收和内存溢出问题。通常,可以...
由于Tomcat的运行高度依赖于Java虚拟机(JVM),我们可以将其性能调优大致分为两大类:**外部环境调优**与**自身调优**。 ##### 2.1 外部环境调优 外部环境调优主要涉及调整Tomcat运行环境的操作系统参数以及运行...
9. **性能调优**: 为了获得最佳性能,可能需要调整Tomcat的JVM参数,如-Xms和-Xmx设置初始和最大堆内存,-XX:MaxPermSize设定永久代大小,以及其他GC相关的参数。 10. **集群与负载均衡**: 对于高可用性和负载均衡...
### Tomcat7 优化与性能调优 #### 一、引言 在现代Web应用开发中,Apache Tomcat因其轻量级、灵活且易于部署的特点成为开发者们的首选应用服务器之一。然而,在面对高并发访问场景时,如何有效地优化Tomcat以提高...
- 使用JVM的性能调优选项,例如调整堆大小和垃圾回收策略。 **9. 监控与日志** - Tomcat的日志文件位于`logs`目录下,用于诊断问题。 - 通过监控工具如JMX或第三方监控软件,可以实时查看Tomcat的运行状态和性能...
- Tomcat调优 - 数据库调优 10. 安全: - XSS、CSRF、SQL注入等常见安全漏洞 - Spring Security安全框架 以上是Java后端必会的所有技能,掌握这些技能可以帮助开发人员在Java后端开发领域更加得心应手。
- 使用JMX(Java Management Extensions)监控Tomcat的运行状态,进行性能调优。 - 关闭不必要的服务和模块,减少内存占用。 8. **故障排查与升级**: - 当遇到问题时,检查日志、堆栈跟踪和服务器状态信息。 -...
这个"apache-tomcat-8.5.78.tar.gz"文件是一个针对Linux/Unix系统的归档压缩文件,包含了Tomcat 8.5.78版本的所有组件和配置文件。在本文中,我们将深入探讨Tomcat 8.5.x系列的核心特性和安装部署过程。 1. **...
`apache-tomcat-7.0.63-windows-x64.zip`是一个用于在64位Windows环境下运行Java Web应用的服务器包。了解其结构、配置和操作方法对于Java开发人员来说至关重要,它为开发和部署基于Java的Web应用提供了基础平台。