每天100w次登陆请求, 8G 内存该如何设置JVM参数?Step1:新系统上线如何规划容量?Step2:该如何进行垃圾回收器的选择?Step3:如何对各个分区的比例、大小进行规划step4:栈内存大小多少比较合适?step5:对象年龄应该为多少才移动到老年代比较合适?
它首先定义了一些变量和 JVM 参数,然后根据用户输入的命令执行相应的函数。start 函数启动应用程序,stop 函数停止应用程序,restart 函数停止并重新启动应用程序,status 函数检查应用程序的运行状态。
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外, 还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点, 用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工
在target目录下【java -jar -Xloggc:gc.log -Xmx35m -Xms35m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps demo-test.jar】启动jar包或者直接在idea中添加【-Xloggc:gc.log -Xmx35m -Xms35m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps】启动springboot启动类,以下用gcviewner监控JVM :gcviwner。由中图可知最大停顿时间比较大,达到了892ms,一般可调优到几十毫秒级别;
可以想象到,这个程序会对 GC 造成压力:修改 pom.xml,配置 spring-boot-maven-plugin 插件打包的 Java 程序的 main 方法类:然后使用 java -jar 启动进程,设置 JVM 参数,让堆最小最大都是 1GB:完成这些准备工作后,我们就可以使用 JDK 提供的工具,来观察分析这个测试程序了。
监控远程的tomcat想要监控远程的tomcat,就需要在远程的tomcat进行对JMX配置,配置完毕重启tomcat#在tomcat的bin目录下,修改catalina.sh,添加如下的参数 CATALINA_OPTS=“$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.0.108 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false” #这几个参数的意思是: #‐Dcom.sun.management.jmxremote :允许使用JMX远程管理 #‐Dcom.sun.management.jmxremote.port=9999 :JMX远程连接端口 #‐Dcom.sun.management.jmxremote.authenticate=false :不进行身份认证,任何用户都可以连接 #‐Dcom.sun.management.jmxremote.ssl=false :不使用ssl。
Old Gen:老年代内存使用情况 :1.829M,48 collections,1.889s表示老年区的最大容量为 40M,当前容量为 40 M,当前已用 1.829M,从开始监控到现在在该内存区域一共发生了 48 次gc,gc 总耗时为 1.889s,换算下可以看出单次 Full GC 要比 Minor GC 耗时长很多。
Docker 使用 Google 公司推出的 Go 语言进行开发实现,基于 Linux 内核的cgroup,namespace,以及 OverlayFS类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。