精华内容
下载资源
问答
  • tomcat 启动占用内存太多

    tomcat调优

    前言

    遇到一个问题,一台机器上启动tomcat占用内存太多


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、tomcat优化配置参数

    1.1 jvm内存

    优化内存,主要是在bin/catalina.bat/sh 配置文件中进行。linux上,在catalina.sh中添加:

    JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128M -XX:MaxPermSize=256M"
    

    • -server:启用jdk的server版本。
    • -Xms:虚拟机初始化时的最小堆内存。
    • -Xmx:虚拟机可使用的最大堆内存。 #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
    • -XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。
    • -XX:MaxNewSize:新生代占整个堆内存的最大值。
    • -XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。

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

    Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Outof Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的-Xms和-Xmx即可解决问题,通常将-Xms和-Xmx设置成一样,堆的最大值设置为物理可用内存的最大值的80%。

    set JAVA_OPTS=-Xms512m-Xmx512m
    

    1.1.2 错误提示:java.lang.OutOfMemoryError: PermGenspace

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

    set JAVA_OPTS=-XX:PermSize=128M
    

    1.1.3 垃圾回收机制

    在使用-Xms和-Xmx调整tomcat的堆大小时,还需要考虑垃圾回收机制。如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

    1.2 连接数优化

    #优化连接数,主要是在conf/server.xml配置文件中进行修改。

    1.2.1、优化线程数

    找到Connector port=“8080” protocol=“HTTP/1.1”,增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads),如下:
    <Connector port=“8080” protocol="HTTP/1.1"connectionTimeout=“20000” redirectPort="8443"acceptCount=“500” maxThreads=“400” />
    其中:
    • maxThreads:tomcat可用于请求处理的最大线程数,默认是200
    • minSpareThreads:tomcat初始线程数,即最小空闲线程数
    • maxSpareThreads:tomcat最大空闲线程数,超过的会被关闭
    • acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理.默认100

    1.2.2、使用线程池

    在server.xml中增加executor节点,然后配置connector的executor属性,如下:

    <Executor name="tomcatThreadPool" namePrefix="req-exec-"maxThreads="1000" minSpareThreads="50"maxIdleTime="60000"/>
    <Connector port="8080" protocol="HTTP/1.1"executor="tomcatThreadPool"/>
    

    其中:
    • namePrefix:线程池中线程的命名前缀
    • maxThreads:线程池的最大线程数
    • minSpareThreads:线程池的最小空闲线程数
    • maxIdleTime:超过最小空闲线程数时,多的线程会等待这个时间长度,然后关闭
    • threadPriority:线程优先级
    注:当tomcat并发用户量大的时候,单个jvm进程确实可能打开过多的文件句柄,这时会报java.net.SocketException:Too many open files错误。可使用下面步骤检查:
    • ps -ef |grep tomcat 查看tomcat的进程ID,记录ID号,假设进程ID为10001
    • lsof -p 10001|wc -l 查看当前进程id为10001的 文件操作数
    • 使用命令:ulimit -a 查看每个用户允许打开的最大文件数

    展开全文
  • Tomcat9运行时初始占用内存大小 服务器环境: JDK:1.8 Tomcat:9.0.40 Tomcat刚启动完成后(未部署工程),占用内存大小:134.5M左右 Tomcat安装步骤: 1、将Tomcat软件包上传至服务器,并解压 tar ...

    Tomcat9运行时初始占用内存大小

    服务器环境:

          JDK:1.8

          Tomcat:9.0.40

     

    Tomcat刚启动完成后(未部署工程),占用内存大小:134.5M左右

    image

     

    Tomcat安装步骤:

     

    1、将Tomcat软件包上传至服务器,并解压

    tar -zxvf apache-tomcat-9.0.40.tar.gz

     

    2、创建Linux用户(专门管理tomcat应用的)

    # groupadd app

    # useradd -m app -g app

     

    设置用户主目录(可跳过)

    mkdir -p /data/app

    usermod -d /data/app app

     

    3、将apache-tomcat-9.0.40目录设置所属用户为app(递归)

    chown -R app:app apache-tomcat-9.0.40/

     

    4、切换用户 su app

    vi ~/.bashrc 文件,在文件末尾加上:

    export PATH=/data/jdk/jdk1.8.0_201:$PATH

    其中/data/jdk/jdk1.8.0_201为Java的二进制安装路径

     

    5、使用户配置文件生效:

    source ~/.profile

    使用java -version命令查看JDK版本。

     

    6、进入tomcat的bin目录

    ./startup.sh 启动tomcat

    展开全文
  • Tomcat进程CPU与内存占用分析

     一、 查询占用CPU高的线程

            1. 查看tomcat线程ID lsof -i:8081  (注意:根据实际情况替换为tomcat端口)

            2.查看tomcat进程列表,按照CPU占用高低进行排序取前十 

                    ps -mp PID -o THREAD,tid,time | sort -rn | head -10

            3.线程转换为16进制 printf "%x\n" TID

            4.查看线程日志  jstack PID |grep 15cd -A 30

     二、查询占用内存高的线程

            1. 查看tomcat线程ID 

            2.查看占用内存高线程.  top -H -p PID | head -10      

             3. 线程转换为16进制 printf "%x\n" TID

             4. 查看线程日志  jstack PID |grep 15cd -A 30

    展开全文
  • 一、查看tomcat内存使用· 查看方式一:查看tomcat的管理页面 (1)恢复tomcat/webapps目录下原来的manager项目文件 (2)修改tomcat/conf/server-users.xml添加以下配置,如下图所示-----配置管理权限------重启...

    环境:jdk1.80 tomcat8.5.31 window2008 server

    一、查看tomcat内存使用·

    查看方式一:查看tomcat的管理页面

    (1)恢复tomcat/webapps目录下原来的manager项目文件
    (2)修改tomcat/conf/server-users.xml添加以下配置,如下图所示-----配置管理权限------重启tomcat

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/3d098c799d734813b68eb2861e4ee1e6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA7oGWIO6QlCDukIog7pCDIO6QhCDukIkg7pCS,size_20,color_FFFFFF,t_70,g_se,x_16)

    (3)访问管理页面http://ip:端口,,点击Server status,输入配置好的账号密码,如下图所示

    在这里插入图片描述
    在这里插入图片描述

    查看方式二:使用jconsole工具查看

    打开jdk\bin目录下找到jconsole.exe文件,双击打开,如图所示,可以看到内存使用情况
    在这里插入图片描述

    查看方式三:使用jvisualvm工具查看

    打开jdk\bin目录下找到jvisualvm.exe文件,双击打开,如图所示,可以看到内存使用情况
    在这里插入图片描述
    打开概述可以看到tomcat的启动参数使用情况
    在这里插入图片描述

    二、修改tomcat的启动内存参数有两种方式

    方式一:将tomcat安装到系统服务中,需要修改注册表,进行修改内存

    win+r -----输入regedit------打开注册表
    HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
    值为
    -Dcatalina.home=“C:\ApacheGroup\Tomcat 5.0”
    -Djava.endorsed.dirs=“C:\ApacheGroup\Tomcat 5.0\common\endorsed”
    -Xrs
    如加入 -Xms512m -Xmx800m

    重启tomcat服务,设置生效

    方式二:直接用tomcat/bin/start.bat程序启动的,需要修改tomcat/bin/catalina.bat文件-----重启tomcat就可以生效

    在“set “CURRENT_DIR=%cd%””上面添加下面配置,如图所示
    set “JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx2048m -Xss512K -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m”
    在这里插入图片描述

    参数详解

    -Xms:指定jvm初始启动以后的初始内存

    -Xmx: jvm堆的最大内存 jvm启动后会分配-Xmx参数指定大小的内存给JVM 但是不一定全部都使用,jvm会根据-Xms参数来调节真正用于jvm的内存

    -Xss: 设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程

    -XX:NewSize:新生代初始值

    -XX:MaxNewSize:新生代最大内存

    -XX:permSize:永久代初始值

    -XX:MaPermSize:永久代最大值

    -XX:MetaspaceSize:初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值

    -XX:MaxMetaspaceSize:最大空间,默认是没有限制的

    Java8以后,永久代被元空间取代,同时元空间不像永久代一样受制于堆内存,元空间是基于操作系统内存的,理论上讲,可以一直扩展内存直到操作系统的极限,
    所以设置元空间大小时,建议加上-XX:MaxMetaspaceSize参数,给个范围限制,和-XX:MetaspaceSize参数值一样,一般设置成256M即可,避免元空间占用的内存一直增长。
    ————————————————
    版权声明:本文为CSDN博主「绅士jiejie」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_38106322/article/details/109004181
    
    展开全文
  • Tomcat 设置JVM内存大小

    2021-02-28 06:23:50
    $var _must_ be set to either true or false.JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"正文:常见的内存溢出有以下两种:java.lang.OutOfMemoryError:...
  • Tomcat进程占用CPU高怎么办?

    千次阅读 多人点赞 2021-08-01 21:57:18
    内存泄露导致频繁GC,进而引起CPU使用率高 代码Bug创建了大量的线程,导致CPU频繁上下文切换 通常所说的CPU使用率高,隐含着一个用来比较高与低的基准值,比如 JVM在峰值负载下的平均CPU利用率40% CPU使用率...
  • 问题描述在工作中经常遇到Tomcat占用CPU居高不下,top显示结果超过200%,请求无法响应,针对这种情况有以下处理办法进行排查。请求无法响应。问题排查1、获取进程信息通过jdk提供的jps命令可以快速查出jvm进程jps ...
  • 在工作中经常遇到tomcat占用cpu居高不下,top显示结果超过200%,请求无法响应,针对这种情况有以下处理办法进行排查。请求无法响应。 问题排查 1、获取进程信息 通过jdk提供的jps命令可以快速查出jvm进程 jps ...
  • Tomcat内存溢出分析及解决方法更新时间:2012年11月21日 15:41:43 作者:堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的,本文将详细介绍Tomcat内存溢出,需要了解...
  • Tomcat内存溢出解决:TomcatJVM内存设置时间:2017-05-11来源:华清远见JAVA学院在使用Tomcat的过程中经常会遇到Tomcat JVM内存溢出的问题,今天华清远见Java学院小编就为大家分享下,如何进行Tomcat JVM内存设置,...
  • 8g服务器tomcat内存设置 内容精选换一换系统每30秒周期性检测HBase服务堆内存使用状态,当检测到HBase服务堆内存使用率超出阈值(最大内存的90%)时产生该告警。若集群启用了多实例功能且安装了多个HBase服务,请根据...
  • 修改tomcat内存在Jetty 的VM参数中设置:-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m在tomcat运行环境中设置:window环境 startup.bat第一行SET CATALINA_OPTS= -Xms256m -Xmx512m -XX:MaxNewSize=...
  • 检查到项目代码中的问题:1.用户数量增加,线程数量过多,内存吃紧2....现象:在tomcat中部署Java的web应用程序,一段时间后出现tomcat的java进程持续占用cpu高达100%,导致web程序访问受阻。可能原因分析:可...
  • Tomcat调优主要内容如下:1、增加最大连接数2、调整工作模式3、启用gzip压缩4、调整JVM内存大小5、作为Web服务器时,与Apache整合或Nginx6、合理选择垃圾回收算法7、尽量使用较新JDK版本生产配置实例:参数说明:org...
  • 本文来源:考试网 因此:我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题。 以上就是针对Tomcat内存溢出的几种解决方案 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有...
  • Tomcat内存不释放问题

    2021-04-24 01:48:08
    我是下载官网的V10.0服务器部署版在使用的时候,经常...这就导致多计算几个表内存使用率就一直增不减少,每次内存达到70-80%的时候我都是重启tomcat来释放内存的,我在官网和百度查询了tomcat内存释放的教程Tobug...
  • 针对杭州数字电视系统内存溢出的问题,对tomcat做了两种监控方式。注:以下配置都配置到catalina.sh文件中。一、gclog,这种方式用于观察内存回收情况,显示的内容如下所示:211847: [GC 211847: [DefNew: 57509K-&...
  • 您可以用把下列代码放在一个JSP文件中,如写入memory.jsp,放到你的TOMCAT下的任何一应用中,就可以看到你的TOMCAT总大可使用多少内存,已经使用了多少.Document : memoryCreated on : 2009-4-9, 1:35:17Author : ...
  • 通常情况下,如果冰法用户数目过大的话,可能会出现内存溢出现象,这时候需要针对tomcat的jvm内存配置进行修改,通常修改就是在catalina.bat中添加: set CATALINA_OPTS=-Xms128M -Xmx256M set JAVA_OPTS=-Xms128M ...
  • 1,问题描述 用springboot作为单个服务,搭建微服务系统。但是数据库经常挂机,测试发现是由于运行内存不足造成的。 云服务器只有2g运行内存,jvm调优基本...合并部分微服务,因为实际占用内存基本都是基础环境。 ...
  • 3.Tomcat 不支持EJB组件的开发,做j2ee项目时,最好还是用weblogic服务,而且在做基本的sql语句时,最好用连接池,不要多用jdbc,odbc桥,因为在建立连接时最耗时间解决方法是让tomcat自己管理内存...
  • 服务器32g内存 tomcat设置多 内容精选换一换目的调整系统配置选项,充分发挥系统硬件性能。调整系统配置选项,充分发挥系统硬件性能。方法具体优化项详见表1。OS配置参数参数名称参数含义优化建议配置方法vm....
  • JAVA_OPTS=’-Xms1024m -Xmx4096m -XX:PermSize=256M -XX:MaxPermSize=1024m’ 改Catalina中的配置
  • 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError: Java ...
  • 最近使用tomcat做服务器,项目中有个导入excel,数据大约2万左右。在本地eclipse调试导入没问题。但是部署到linxu后就报 "http-bio-8080-exec-4" java.lang.OutOfMemoryError: PermGen space然后看了下服务器状态,...
  • 使用Java程序从数据库中查询大量的数据时出现异常:java.lang....JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的...
  • Tomcat内存溢出的原因在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:1....
  • 本文和大家重点讨论一下如何设置Tomcat的JVM内存大小,JAVA程序启动时JVM都会分配一个初始内存和***内存给这个应用程序。这个初始内存和***内存在一定程度都会影响程序的性能。如何设置Tomcat的JVM内存大小Tomcat...
  • Tomcat启动内存设置

    2021-10-05 13:55:51
    Tomcat的启动分为startupo.bat启动和注册为windows服务的启动。 1.startup.bat启动 在tomcat_home/bin目录下找到catalina.bat,用文本编辑器打开...-Xms1024M:初始化堆内存大小(注意,不加M的话单位是KB) -Xmx10
  • 前段时间,线上服务器一个项目内存泄漏...下边简单记录下更改jvm内存限制:[[emailprotected] bin]# cd /usr/local/tomcat_8080/bin/[[emailprotected] bin]# lltotal 792-rw-r--r-- 1 root root 27099 Jun 15 16:40...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,132
精华内容 22,052
关键字:

tomcat内存占用过大