`

Tomcat的JVM设置和连接数设置

    博客分类:
  • web
 
阅读更多

一、Tomcat的JVM提示内存溢出

查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误

二、修改Tomcat的JVM

1、错误提示:java.lang.OutOfMemoryError: Java heap space

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设置可以使用的最大内存。

2、错误提示: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

3、JVM设置

堆的尺寸
-Xmssize in bytes
    设定Java堆的初始尺寸,缺省尺寸是2097152 (2MB)。这个值必须是1024个字节(1KB)的倍数,且比它大。(-server选项把缺省尺寸增加到32M。)
-Xmnsize in bytes
    为Eden对象设定初始Java堆的大小,缺省值为640K。(-server选项把缺省尺寸增加到2M。)
-Xmxsize in bytes
    设定Java堆的最大尺寸,缺省值为64M,(-server选项把缺省尺寸增加到128M。) 最大的堆尺寸达到将近2GB(2048MB)。

请注意:很多垃圾收集器的选项依赖于堆大小的设定。请在微调垃圾收集器使用内存空间的方式之前,确认是否已经正确设定了堆的尺寸。

垃圾收集:内存的使用
-XX:MinHeapFreeRatio=percentage as a whole number
    修改垃圾回收之后堆中可用内存的最小百分比,缺省值是40。如果垃圾回收后至少还有40%的堆内存没有被释放,则系统将增加堆的尺寸。
-XX:MaxHeapFreeRatio=percentage as a whole number
    改变垃圾回收之后和堆内存缩小之前可用堆内存的最大百分比,缺省值为70。这意味着如果在垃圾回收之后还有大于70%的堆内存,则系统就会减少堆的尺寸。
-XX:NewSize=size in bytes
    为已分配内存的对象中的Eden代设置缺省的内存尺寸。它的缺省值是640K。(-server选项把缺省尺寸增加到2M。)
-XX:MaxNewSize=size in bytes
    允许您改变初期对象空间的上限,新建对象所需的内存就是从这个空间中分配来的,这个选项的缺省值是640K。(-server选项把缺省尺寸增加到2M。)
-XX:NewRatio=value
    改变新旧空间的尺寸比例,这个比例的缺省值是8,意思是新空间的尺寸是旧空间的1/8。
-XX:SurvivorRatio=number
    改变Eden对象空间和残存空间的尺寸比例,这个比例的缺省值是10,意思是Eden对象空间的尺寸比残存空间大survivorRatio+2倍。
-XX:TargetSurvivorRatio=percentage
    设定您所期望的空间提取后被使用的残存空间的百分比,缺省值是50。
-XX:MaxPermSize=size in MB
    长久代(permanent generation)的尺寸,缺省值为32(32MB)。

三、查看Tomcat的JVM内存

1. Tomcat6中没有设置任何默认用户,因而需要手动往Tomcat6的conf文件夹下的tomcat-users.xml文件中添加用户。

 

    如:<role rolename="manager"/>
          <user username="tomcat" password="tomcat" roles="manager"/>

    注:添加完需要重启Tomcat6。

 

2. 访问http://localhost:8080/manager/status,输入上面添加的用户名和密码。

 

3. 然后在如下面的JVM下可以看到内存的使用情况。

JVM

    Free memory: 2.50 MB Total memory: 15.53 MB Max memory: 63.56 MB

四、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安装使用及jvm连接数参数调优

    Tomcat7 安装使用及 JVM 连接数参数调优 Tomcat7 是一个流行的 Java Web 服务器,主要用于部署和管理基于 Java 的 Web 应用程序。为了确保 Tomcat7 的稳定运行和高效性能,需要对其进行合理的安装、配置和优化。...

    tomcat配置 连接数(优化)

    标题中的“Tomcat配置连接数(优化)”指的是在Apache Tomcat服务器中调整与处理并发请求相关的设置,以提升服务器的性能和稳定性。这通常涉及到调整最大连接数、线程池大小、超时时间等核心参数。在高并发场景下,...

    linux下tomcat优化设置最大连接数内存jconsole监控.docx

    ### Linux 下 Tomcat 优化设置最大连接数及内存 JConsole 监控 #### 一、Tomcat 内存优化 ##### 1.1 基本原理 在启动 Java 应用程序时,JVM(Java 虚拟机)会为应用程序分配一定的初始内存和最大内存。这些设置对...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    它包含了MySQL服务器的启动参数和配置选项,如端口号、最大连接数、日志设置等。但在这里,由于没有提供具体的信息,我们无法深入讨论,只能将其作为一个可能的上下文背景。 综上所述,解决Tomcat的乱码问题需要...

    JBOSS\Tomcat最大连接数配置和jvm内存配置.docx

    【JBOSSTomcat最大连接数配置和JVM内存配置】 在JBOSSTomcat服务器的性能优化中,最大连接数配置和JVM内存配置是两个至关重要的环节,它们直接影响到服务器的响应速度和稳定性,尤其对于处理大量并发请求的场景。 ...

    Tomcat JVM调优-TomcatJVM.zip

    2. JConsole和VisualVM:这两款工具可以连接到JVM,实时查看和分析性能数据,帮助识别性能瓶颈。 3. GC日志:开启-XX:+PrintGCDetails和-XX:+PrintGCDateStamps,记录详细的垃圾回收信息,有助于分析GC行为。 五、...

    JVM-Tomcat线程-数据库连接池设置建议.docx

    ### JVM-Tomcat线程-数据库连接池设置建议 #### 一、JVM参数设置 在设置JVM参数时,我们需要遵循一定的原则以确保应用程序能够高效稳定地运行。以下是一些具体的设置指南: 1. **Java堆大小设置**: - `Xmx` 和 ...

    如何配置Tomcat的JVM虚拟机内存大小

    正确配置Tomcat的JVM内存和连接器参数,对于优化Web应用性能、提升用户体验至关重要。通过对`-Xms`、`-Xmx`等参数的细致调整,结合适当的垃圾回收策略,以及合理设置连接器参数,可以显著增强Tomcat服务器的稳定性和...

    如何设置Tomcat的JVM虚拟机内存大小

    ### 如何设置Tomcat的JVM虚拟机内存大小 在部署和运行基于Java的应用程序时,经常需要调整Tomcat服务器的JVM(Java虚拟机)内存配置以优化性能。合理设置JVM内存对于确保应用程序稳定运行至关重要。本文将详细介绍...

    jvm虚拟机参数调优,tomcat调优

    Tomcat作为流行的Java应用服务器,其性能优化也与JVM设置紧密相关。本篇文章将深入探讨JVM参数调优以及如何针对Tomcat进行优化。 首先,JVM调优主要包括堆内存分配、垃圾收集器选择、线程池配置、类加载机制调整等...

    tomcat-jvm优化

    本文将深入探讨如何通过调整JVM的设置来优化Tomcat服务器,尤其是关于内存管理和连接器优化的关键知识点。 #### 二、JVM内存优化 ##### 1. 初始化堆与最大堆设置 JVM启动时,可以通过-Xms和-Xmx参数来设置初始化...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    总结而言,该文档覆盖了Tomcat服务器优化、JVM参数调整、字节码级别的优化以及代码层面的优化等多个方面,旨在通过一系列配置和操作,提升Java应用以及Web服务器的性能和效率。同时,也提到了性能测试的重要性和在...

    tomcat-jvm调优

    通过合理设置上述参数,可以显著提升Tomcat服务器的并发处理能力和响应速度,进而改善整体应用性能。需要注意的是,最佳的参数配置往往依赖于具体的应用场景和业务需求,因此建议结合实际测试结果进行调整优化。

    Tomcat 调优及 JVM 参数优化

    为了确保这些应用高效、稳定地运行,调优Tomcat和JVM参数至关重要。这篇文章将深入探讨Tomcat调优与JVM参数优化的各个方面,帮助你提升服务器性能。 首先,我们来了解一下Tomcat调优的基础知识。Tomcat调优主要包括...

    Tomcat性能优化及JVM内存工作原理

    例如,调整最大连接数、工作模式、启用gzip压缩、调整JVM内存大小等。 Tomcat有三种工作模式:Bio、Nio和Apr。Bio是默认的工作模式,阻塞式I/O操作,没有任何优化技术处理,性能比较低。Nio是非阻塞式I/O操作,有...

    Tomcat6参数设置

    ### Tomcat6参数设置详解 #### 一、内存参数配置 Tomcat作为一款广泛使用的Java应用服务器和Web容器,其性能优化尤为重要。特别是在资源管理方面,合理地设置内存参数能够显著提升应用程序的运行效率和稳定性。 *...

    监控tomcat内存使用情况

    要启用这个功能,我们需要在Tomcat的配置文件`conf/tomcat-users.xml`中设置相应的角色和用户。在上述给出的XML片段中,我们看到了四个预定义的角色:`tomcat`、`role1`、`manager`和`admin`,以及与之关联的用户。...

    Tomcat和MySql和Jvm和Oracle性能监控和调优

    在IT行业中,性能监控和调优是至关重要的环节,尤其对于服务器端应用如Tomcat、数据库系统MySQL和Oracle,以及Java虚拟机(JVM)来说。这些组件在支撑大规模业务时,性能表现直接影响到系统的响应速度和用户体验。...

    redis集群jvm调优实战MySQL5.6性能优化&Tomcat7优化.rar

    文档可能讲解了如何调整连接器配置,如最大连接数、超时设置,以及线程池的管理。另外,可能还会介绍如何通过部署多实例、负载均衡来提高整体服务的可用性和性能。 总结来说,这个资料集合提供了全面的优化策略,...

    jvm优化参数配置

    - `-XX:+PrintFlagsFinal`打印所有默认和已设置的JVM选项,`-XX:+PrintGCDetails`和`-XX:+PrintGCDateStamps`用于输出详细的GC日志,便于分析。 10. **内存泄漏检测**: - 使用`-XX:+HeapDumpOnOutOfMemoryError`...

Global site tag (gtag.js) - Google Analytics