linux环境下tomcat容器中 jvm通过catalina.sh内存限制

前段时间,线上服务器一个项目内存泄漏把内存跑多了,导致整个服务器出问题,于是内存限制就需要去搞一下。下边简单记录下更改jvm内存限制:

[root@21yunwei bin]# cd /usr/local/tomcat_8080/bin/
[root@21yunwei bin]# ll
total 792
-rw-r--r-- 1 root root  27099 Jun 15 16:40 bootstrap.jar
-rw-r--r-- 1 root root   1647 Jun 15 16:41 catalina-tasks.xml
-rw-r--r-- 1 root root  13372 Jun 15 16:40 catalina.bat
-rwxr-xr-x 1 root root  21704 Jul  4 07:55 catalina.sh
 
进入了项目里边的bin目录找到 catalina.sh 添加如下:

CATALINA_OPTS="$CATALINA_OPTS -Xms256M -Xmx512M -Xmn256M"
重启该进程,查看如下:

[root@21yunwei bin]# ps aux | grep java
root        314  1.4  7.7 2972648 145444 pts/0  Sl   07:55   0:08 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat_8080/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Xms256M -Xmx512M -Xmn256M -Djava.endorsed.dirs=/usr/local/tomcat_8080/endorsed -classpath /usr/local/tomcat_8080/bin/bootstrap.jar:/usr/local/tomcat_8080/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat_8080 -Dcatalina.home=/usr/local/tomcat_8080 -Djava.io.tmpdir=/usr/local/tomcat_8080/temp org.apache.catalina.startup.Bootstrap start
root        343  0.0  0.0   9040   672 pts/0    S+   08:05   0:00 grep --color=auto java
可见:
Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Xms256M -Xmx512M -Xmn256M 已经是修改成功了。

其中技巧如下:
1,说明参数: -Xms256M初始内存大小 -Xmx512M最大内存大小 -Xmn256M 最小内存大小
2,默认:初始值是物理内存的1/64 最大内存是物理内存1/4 可以根据自己服务器配置内存配置情况和项目部署情况进行配置。
3,可以根据一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

时间: 2024-10-24 14:41:19

linux环境下tomcat容器中 jvm通过catalina.sh内存限制的相关文章

tomcat启动时 过高-linux环境下tomcat启动时CPU过高

问题描述 linux环境下tomcat启动时CPU过高 我从tomcat官方网站上下载了一个tomcat7,然后上传到linux环境下解压,然后启动tomcat(没有部署任何项目), CPU瞬间就达到100%,请高手帮忙解释下,是什么原因 解决方案 性能调优:http://blog.chinaunix.net/uid-26204366-id-3896703.html 解决方案二: http://www.linuxidc.com/linux/2014-07/104753.htm 解决方案三: ht

浅谈Linux环境下并发编程中C语言fork()函数的使用_C 语言

由fork创建的新进程被称为子进程(child process).fork函数被调用一次,但返回两次.子进程的返回值是0,而父进程的返回值则是新进程的进程ID.将子进程ID返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得其所有子进程的进程ID.fork使子进程得到返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getpid以获得其父进程的进程ID. 使fork失败的两个主要原因是:系统中已经有了太多的进程,或者该实际用户ID的进程总数超过

项目移到linux环境下时tomcat报错 java.util.zip.ZipException: invalid END header

问题描述 我把我的一个windows环境下的项目移到linux环境下时tomcat报错,报错如下:java.util.zip.ZipException: invalid END header (bad central directory offset)at java.util.zip.ZipFile.open(Native Method)at java.util.zip.ZipFile.<init>(ZipFile.java:114)at java.util.jar.JarFile.<i

Linux环境下安装RocketMQ(MetaQ)

一:RocketMQ简介 RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.能够保证严格的消息顺序 2.提供丰富的消息拉取模式 3.高效的订阅者水平扩展能力 4.实时的消息订阅机制 5.亿级消息堆积能力 二:安装RocketMQ 下载源码 首先我们从githup上获取RocketMQ的源码,目前最新的版本为3.5.8,下载地址为:https://github.com/alibaba/RocketMQ/releases 或者 wget  https://github.com/

Linux环境下安装dubbo-admin

注意:本文采用的Linux版本为CentOs6.5. 准备工作 在安装dubbo-admin之前,我们需要的准备工作是你的Linux已经安装了jdk和Zookeeper.具体的安装步骤请参看这两篇文章Linux环境下系统安装JDK和Linux环境下安装Zookeeper.另外我们还需要准备一份tomcat的安装包和dubbo-admin的war包.你可以在这里下载到他们dubbo-admin和linux tomcat7. 安装Tomcat OK在前面的准备工作都进行完了之后,我们就可以开始安装d

Jexus~Linux环境下的部署

Jexus 即 Jexus Web Server,简称JWS,是Linux平台上的一款ASP.NET WEB服务器,是 Linux.Unix.FreeBSD 等非Windows系统架设 ASP.NET WEB 服务器的核心程序,是企业级ASP.NET跨平台部署的一种可选方案.与其它WEB服务器相比,Jexus不但具有跨平台ASP.NET服务器这样的标志性特征,同时还拥有内核级的安全监控.入侵检测.URL重写.无文件路由等一系列重要功能和专有特性. 安装与部署 cd /tmp sudo rm je

Linux环境下&amp;quot;Font font = new Font(&amp;quot;黑体&amp;quot;, Font.BOLD, 18)&amp;quot;[BufferedImage~Graphics~drawString]中文乱码

Linux环境下"Font font = new Font("黑体", Font.BOLD, 18)"[BufferedImage~Graphics~drawString]中文乱码,windows下不会乱码,但在linux下nginx和tomcat部署后出现乱码.方框.问号等等,不能认清楚!!! 先说说系统: Microsoft Windows [版本 10.0.10586] (c) 2015 Microsoft Corporation.保留所有权利. ------

Linux环境下发现并阻止系统攻击

攻击 一. 当在一台PC机上安装了Linux系统,你就拥有了一个强大的.高级的.多任务的网络操作系统.但时候该系统功能有些过于强大了些.某些发布版本缺省启动很多服务(如:rlogind, inetd, httpd, innd, fingerd,timed, rhsd,等等).作为系统管理员需要熟悉了解这些服务.若机器连接了Internet,就更需要关自己系统的安全. 大多数攻击者并不是一个革新者,他们往往利用最新的公布的系统工具技术等突破一个所周知的或 一个新的刚刚发现的安全漏洞.但作为一个管理

linux环境下一个进程最多能有多少个线程

以下是对在linux环境下一个进程最多能有多少个线程进行了介绍,需要的朋友可以过来参考下 默认情况下: 主线程+辅助线程 +<253个自己的线程<=255 含主线程和一个辅助线程,最多255个,即你自己只能生成253个线程. 据说可以设置线程数目: 据说是可以设置的,但本人还没有验证!不知道可否. 在你的shell中键入limit命令,里面有descriptor的数目,就是你的进程可以创建的最大线程数目.可以通过修改内核文件更改该数目.