zoukankan      html  css  js  c++  java
  • JAVA企业级应用TOMCAT实战(三)

    JVM优化涉及到两大方面我个人的理解
    1.如何分配JVM的内存空间
    2.我应该使用什么垃圾回收器
    JVM产生的垃圾需要回收、回收有不同的回收器、
    JVM的调优需要了解各个垃圾回收机制的原理、
    终极目标:降低FULL GC出现的频率  (FULL GC出现会导致应用的暂停服务)
    
    
    优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码:
    JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
    server:一定要作为第一个参数,在多个CPU时性能佳
    -Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
    -Xmx:初始堆内存heap最大值,使用的最大内存
    上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
    -XX:PermSize:设定内存的永久保存区域
    -XX:MaxPermSize:设定最大内存的永久保存区域
    -XX:MaxNewSize:
    -Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
    +XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
    -Xss:每个线程的Stack大小
    -verbose:gc 现实垃圾收集信息
    -Xloggc:gc.log 指定垃圾收集日志文件
    -Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
    -XX:+UseParNewGC :缩短minor收集的时间
    -XX:+UseConcMarkSweepGC :缩短major收集的时间

     使用jconsole.exe来监控jvm

    配置文件更改

    [tomcat@linux-node1 tomcat]$ vim bin/catalina.sh 
    CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote # #启用远程监控JMX
    -Dcom.sun.management.jmxremote.port=12345 #jmx远程端口,Zabbix添加时必须一致
    -Dcom.sun.management.jmxremote.authenticate=false #不开启用户密码认证
    -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.230.130" #运行tomcat服务IP(不要填写错了)

    JConsole是一个可执行文件,在java根目录下bin文件;单击bin文件下JConsole.exe运行程序

    还能手动执行GC

    还有个工具jvisualvm.exe、这个可以同时监控多个

    zabbix3.0版本可以利用javaget监听jvm的一些参数

  • 相关阅读:
    文本查询程序再探
    第15章 面向对象程序设计
    错误和异常处理 使用模板
    PHP会话管理
    身份验证
    表单提交与接收 文件提交与接收
    PHP文件访问
    PHP面向对象
    PHP速学
    第14章 重载运算与类型转换
  • 原文地址:https://www.cnblogs.com/w787815/p/6714160.html
Copyright © 2011-2022 走看看