设为首页 收藏本站
查看: 247|回复: 0

[经验分享] tomcat 内存优化(二)

[复制链接]

尚未签到

发表于 2017-1-20 10:39:23 | 显示全部楼层 |阅读模式
  tomcat 设置缓存大小
-------------------------
java的运行平台JVM(java虚拟机)在一个应用程序启动的时候,虚拟机都要分配一个最的内存和最小内存给
  他的。对于内存吃内存狂的JAVA来说,这个初始内存和最大内存在一定程度会对应用程序的性能产生很大的
  影响。比如说在我们的应用程序用到JVM给的这个最大内存配额的时候,JVM就不得不先停下我们的应用程
序的工作,去寻找可以回手的垃圾(释放已经无用的对象占用的内存),释放被占用的一些内存。
   一般我们为了自己配额的这个最大值和最小值都是在启动java程序的时候加参数:-X
ms -Xmx来调整应用程序的初始内存和最大内存,其中Xms代表最小配额,Xmx代表最大配额

  
在前段时间,我用resin的时候启动文件里面还好设置这两个参数,但是换了tomcat以
后就不一样了,
   tomcat的启动并不是普通的java程序那样,是经过了封装的,所以在设置这两个参数
的时候还有写麻烦,不过只要是java程序,总有地方可以设置这个参数的。

在查找了一些资料以后终于搞定了,可以通过下面这两种方法来解决:
   1. 就需要在环境变量中加上TOMCAT_OPTS, CATALINA_OPTS两个属性,
如 SET CATALINA_OPTS= -Xms64m -Xmx512m//结尾没有";"等标点符号
ms是最小的,mx是最大,64m, 512m分别是指内存的容量.
   2. 修改Catalina.bat文件
在166行“rem Execute Java with the applicable properties ”以下每行
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JA
VA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%"
-Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCL
ASS% %CMD_LINE_ARGS% %ACTION% 中的%CATALINA_OPTS% 替换成-Xms64m -Xmx512m
  e.g
update file :
/tomcat/bin/catalina.bat
update the line
set JAVA_OPTS=-Xmx256M -Xms64M
means max cache & min cache
  =================================================================================
  Tomcat 5.5端口设置
  为了与IIS的端口区别开来,Tomcat默认的端口是8080。然而很多时候,我们并不习惯于使用8080端口来访问
  web网站,特别是将其部署在Internet上以后,采用域名去访问它尤为不便,为此,我们希望更改Tomcat应用
  服务器的端口。在以前的版本中,更改端口的设置是十分方便的,只需打开Tomcat主目录中conf目录下的
  server.xml文件,找到其中的Connector port="8080",并将其更改为Connector port="80"即可,修改后的文
  件如下(有删减):
   < Service name ="Catalina" >
   <!-- Define a non-SSL HTTP/1.1 Connector on port 8080, change it to 80. -->
   < Connector
  port ="80" maxHttpHeaderSize ="8192"
   maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75"
   enableLookups ="false" redirectPort ="8443" acceptCount ="100"
   connectionTimeout ="20000" disableUploadTimeout ="true" />
  
   <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
   <!--
   <Connector port="8443" maxHttpHeaderSize="8192"
   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
   enableLookups="false" disableUploadTimeout="true"
   acceptCount="100" scheme="https" secure="true"
   clientAuth="false" sslProtocol="TLS" />
   -->
   <!-- Define an AJP 1.3 Connector on port 8009 -->
   < Connector port ="8009"
   enableLookups ="false" redirectPort ="8443" protocol ="AJP/1.3" />
  
   <!-- Define the top level container in our container hierarchy -->
   < Engine name ="Catalina" defaultHost ="localhost" >
   <!-- Because this Realm is here, an instance will be shared globally -->
   <!-- This Realm uses the UserDatabase configured in the global JNDI
   resources under the key "UserDatabase". Any edits
   that are performed against this UserDatabase are immediately
   available for use by the Realm. -->
   < Realm className ="org.apache.catalina.realm.UserDatabaseRealm"
   resourceName ="UserDatabase" />
   <!-- Define the default virtual host
   Note: XML Schema validation will not work with Xerces 2.2.
   -->
   < Host name ="localhost" appBase ="webapps"
   unpackWARs ="true" autoDeploy ="true"
   xmlValidation ="false" xmlNamespaceAware ="false" >
   </ Host >
   </ Engine >
   </ Service >
  改动好以后,重启Tomcat,改动就生效了,应该说,还是挺方便的。
  ===========================================================================
  关于jboss或者tomcat服务器内存配置的说明
  http://zhidao.baidu.com/question/25136505.html?quesup1
  http://zhidao.baidu.com/question/25133237.html
  ==============================================================================
  设置tomcat内存
  大家都知道,JAVA程序启动时都会JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最
  大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM是要先去做垃圾回收的
  动作,释放被占用的一些内存。
  所以想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明,一般的JAVA程序在运行都可以通过中-Xms
  -Xmx来调整应用程序的初始内存和最大内存:
  如:java -Xms64m -Xmx128m a.jar.
  tomcat的启动程序是包装过的,不能直接使用java -X..... tomcat.*来改变内存的设置。在Tomcat在改变这
  个设置
  有两种方法:
  1. 就需要在环境变量中加上TOMCAT_OPTS, CATALINA_OPTS两个属性,
  如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
  ms是最小的,mx是最大,64m, 512m分别是指内存的容量.
  2. 修改Catalina.bat文件
  在166行“rem Execute Java with the applicable properties ”以下每行
  %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%
  JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -
  Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %
  CMD_LINE_ARGS% %ACTION% 中的%CATALINA_OPTS% 替换成-Xms64m -Xmx512m
  ============================================================
  Tomcat内存设置方法
  windows中大家都知道,JAVA程序启动时都会JVM都会分配一个初始内存和最大内存给这个应用程序。这个初
  始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM是要先去做
  垃圾回收的动作,释放被占用的一些内存。
   所以想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明,一般的JAVA程序在运行都可以通过中
  -Xms -Xmx来调整应用程序的初始内存和最大内存:
  如:java -Xms64m -Xmx128m a.jar.
   tomcat的启动程序是包装过的,不能直接使用java -X..... tomcat.*来改变内存的设置。在Tomcat在改
  变这个设置
  有两种方法:
  1. 适合用%tomcat_home%/bin中的startup.bat脚本启动,需要在环境变量中加上CATALINA_OPTS这个属性 。
   如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
   ms是最小的,mx是最大,64m, 512m分别是指内存的初始和最大容量.
  因为:用startup.bat启动tomcat服务器,会调用catalina.bat文件,在Catalian.bat文件的166行“rem
  Execute Java with the applicable properties ”下面会加载系统设置的相关属性。
  其中就有%CATALINA_OPTS%这一项。这样tomcat在启动时就会将内存设置为指定的值。
  2. 适合将tomcat作为系统服务启动,这时候上面设置CATALINA_OPTS 属性的方法就不适用了,因为作为系统
  服务的话,系统启动时调用的是 %tomcat_home%/bin/tomcat5w.exe,他读取注册表中的值,而不是
  catalina.bat的设置,因此需要修改注册表:
  解决办法:
  修改注册表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
  加入 -Xms300m -Xmx350m
  重起tomcat服务,设置生效
  最后,测试tomcat大小,jsp页面
  <%
  Runtime lRuntime = Runtime.getRuntime();
  out.println("*** BEGIN MEMORY STATISTICS ***<br/>");
  out.println("Free Memory: "+lRuntime.freeMemory()+"<br/>");
  out.println("Max Memory: "+lRuntime.maxMemory()+"<br/>");
  out.println("Total Memory: "+lRuntime.totalMemory()+"<br/>");
  out.println("Available Processors : "+lRuntime.availableProcessors()+"<br/>");
  out.println("*** END MEMORY STATISTICS ***");
  %>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-331098-1-1.html 上篇帖子: 如何清除tomcat缓存? 下篇帖子: tomcat设置URL编码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表