您现在的位置是:主页 > news > 老外做牛排的视频网站/google排名

老外做牛排的视频网站/google排名

admin2025/6/7 1:09:31news

简介老外做牛排的视频网站,google排名,律师网站建设,2023年最新法定传染病有哪些本文主要了解以下内容:1、JDK自带的几款在线监控工具(JPS、jstat、jstack、jmap),用户实时监控JVM运行装填2、JVM离线分析工具(VisualVM),用于分析dump下来的堆内存文件,远程监控JVM状态。3、第三方在线监控…

老外做牛排的视频网站,google排名,律师网站建设,2023年最新法定传染病有哪些本文主要了解以下内容:1、JDK自带的几款在线监控工具(JPS、jstat、jstack、jmap),用户实时监控JVM运行装填2、JVM离线分析工具(VisualVM),用于分析dump下来的堆内存文件,远程监控JVM状态。3、第三方在线监控…

本文主要了解以下内容:

1、JDK自带的几款在线监控工具(JPS、jstat、jstack、jmap),用户实时监控JVM运行装填

2、JVM离线分析工具(VisualVM),用于分析dump下来的堆内存文件,远程监控JVM状态。

3、第三方在线监控工具(Arthas的使用)


1、在线监控工具

1-1、JPS (打印Java进程信息)

使用场景 : 查看当前机器的所有Java进程信息(可追踪到应用进程ID 、启动类名、文件路径。)。

指令格式 : jps 【选项 】 [hostid]

[hostid] 远程地址,可选参数,指定特定主机的IP或者域名,也可以指定具体协议端口,不指定则查看当前机器的相关信息,hostid所指机器必须开启jstatd服务。

183a57f2b86699cce73522444f47d8e7.png

常用命令: jps -l

查看当前虚拟器运行的进程,输出主类全路径名称。

de025ae345f30b4ef395dff2963c36af.png

1-2、Jstat (JVM统计信息)

使用场景 :用于查看各个功能和区域的统计信息(如:类加载、编译相关信息统计,各个内存区域GC概况和统计)

格式 : jstat 【选项】 【进程ID】 [间隔时间 ] [查询次数]

[间隔时间 ] 可选参数,每隔多长时间输出一次信息,单位为毫秒。

[查询次数] 可选参数,总共输出多少次信息。

ac9f911f745f8d132685127a9d667d1c.png

常用指令:jstat -gc PID

查看即时内存使用情况、垃圾回收统计信息,用于分析GC情况。

 指令: jstat  -gc  16462  1000  5//查看16462进程 应用的堆内存使用、垃圾回收统计信息,每个1000毫秒输出一次,总共输入5次 。

ef5c8a2ba4709c1e7c8ca3c86f75cf28.png

参数说明:

 S0C 和 S0U    //S0区的总内存大小和已使用的内存大小。​S1C: 和S1U   //S1区的总内存大小和已使用的内存大小。。​EC 和 EU     //Eden区的总内存大小 和已使用的内存大小。​OC和OU       //Old区的总内存大小 和已使用的内存大小。​MC和MU       //方法区的总内存大小 和已使用的内存大小。​CCSC和CCSU   //压缩类空间大小 和已使用的内存大小。​YGC和 YGCT   //Young GC 的总次数 和消耗总时间。​FGC和 FGCT   //Full Gc的总次数和消耗总时间。​GCT         //所有GC的消耗时间。

1-3、Jinfo(JVM参数查看修改)

使用场景: 查看和调整JVM启动和运行参数。

格式:

jinfo 【进程ID】

jinfo 【选项】【进程ID】

jinfo 【选项】【具体选项参数名】【进程ID】

案例一:查看JVM整个系统参数信息

比如:输出16462进程jvm的全部参数和系统属性。

指令 : jinfo 16462

4387756a680ac14e2c082435aecd811e.png

案列二: 查看某个具体参数

比如:查看老年代内存大小

指令:jinfo -flag OldSize 16462

1a838db3b886923a892419f259d03585.png

案列三:启用某个配置

比如:开启堆内存溢出日志打印(默认是关闭的)。

指令:jinfo -flag +PrintGCDetails 16462

e090b60c0464bde06a1133dea9b247d7.png

案例四:修改某个参数值

比如:修改当堆内存对象所占空间超过80%时进行扩容

指令:jinfo -flag MaxHeapFreeRatio=80 16462

d257942c045ed58540db1597a7177b3e.png

案列五:启用某个配置

比如: 启动GC日志打印

指令:jinfo -flag +PrintGCDetails 16462

7ec78361cea5c510efc0a8ba7277ac5e.png

1-4、Jmap(JVM内存信息监控)

使用场景: 监控堆内存使用情况和对象占用情况, 生成堆内存快照文件,查看堆内存区域配置信息。

格式:jmap 【选项】【进程ID】

8328319e99f6772cc6a0b2f14cd80f7b.png

案例一:查看堆内存的配置和使用情况

命令: jmap -heap 18230

 Heap Configuration:MinHeapFreeRatio         = 0             //JVM堆缩减空间比率,低于则进行内存缩减MaxHeapFreeRatio         = 100           //JVM堆扩大内存空闲比例,高于则进行内存扩张 MaxHeapSize              = 994050048 (948.0MB)   //堆最大内NewSize                  = 20971520 (20.0MB)     //新生代初始化内存大小MaxNewSize               = 331350016 (316.0MB)   //新生代最大内存大小OldSize                  = 41943040 (40.0MB)     //老年代内存大小NewRatio                 = 2                     //新生代和老年代占堆内存比率SurvivorRatio            = 8                      //s区和Eden区占新生代内存比率MetaspaceSize            = 21807104 (20.796875MB)  //元数据初始化空间大小CompressedClassSpaceSize = 1073741824 (1024.0MB)     //类指针压缩空间大小MaxMetaspaceSize         = 17592186044415 MB       //元数据最大内存代销      G1HeapRegionSize         = 0 (0.0MB)             //G1收集器Region单元大小​Heap Usage:PS Young GenerationEden Space: capacity = 303038464 (289.0MB)             //Eden区总容量used     = 22801000 (21.744728088378906MB)  //Eden区已使用荣浪free     = 280237464 (267.2552719116211MB)   //Eden区剩余容量7.524127366221075% used                      //Eden区使用比例From Space:      //From区(也就是Survivor中的S1区)                             capacity = 13107200 (12.5MB)                    //S1区总容量大小used     = 5364536 (5.116020202636719MB)          //S1区已使用大小free     = 7742664 (7.383979797363281MB)           //S1区剩余大小40.92816162109375% used                       //S1使用比例To Space:      //To区 (也就是Survivor中的S2区)      capacity = 13631488 (13.0MB)              //S2区总容量大小used     = 0 (0.0MB)                     //S2区已使用大小free     = 13631488 (13.0MB)             //S2区剩余大小0.0% used                                //S2区使用比率PS Old Generation           capacity = 110624768 (105.5MB)           //老年代总容量大小used     = 49431224 (47.14128875732422MB) //老年代已使用大小free     = 61193544 (58.35871124267578MB) //老年代剩余大小44.68368602589973% used                   //老年代使用功能比例​

案例二:查看JVM中对应类型对象的数量、占用内存情况

命令:

 jmap -histo 18230 | sort -n -r -k 2 | head -10  //统计实例最多的类 前十位有哪些jmap -histo 18230 | sort -n -r -k 3 | head -10  //统计合计容量前十的类有哪些  

635c16d78b7318b7cbc288f6ab4f5b52.png

案例三:dump 堆快照

命令:jmap -dump:live,format=b,file=/home/myheapdump.hprof 18230

 live   加上live代表只dump存活的对象 ;fomat  格式filie  导出的文件名18230  java进程ID

这里生成的 dump文件可以用我们后面讲的可视化工具VisualVM来打开文件对里面的内容进行分析。

1-5、jstack(JVM线程信息监控)

使用场景: 查看JVM线程信息 和生成线程快照。

格式:

jstack 【选项】 【进程ID】

jstack [ 选项 ] executable core

jstack [ 选项 ] [进程ID]远程IP

e787578308700f887a3b16960f484014.png

案例一:打印堆栈线程信息 ,输出到文件

 jstack -l 871055 >jstack.prof

17253946aabe84570076a9c9be9e3f30.png

2、离线分析工具(VisualVM)

2-1、VisualVM安装

VisualVM 不需要额外安装,我们安装JDK的时候就自带了VisualVM,在安装JDK的 bin目录下可以找到jvisualvm.exe

bc38cc7a760cf968fb4d2ad8bdb62737.png

VisualVM插件安装

点击工具->插件,在窗口栏里选择自己需要的插件进行在线安装。

8adca923cc7ecbc13b792960d7a7ec3e.png

2-2、使用VisualVM分析dump文件

因为我们通常都是没办法直接在生产环境进行调优分析的,所以一般都会把相关的内存、线程的dump文件拿到自己的电脑进行分析,VisualVM 支持导入dump文件的方式。

(1)在需要进行内存分析的机器上把 内存或线程日志dump下来

 jmap -dump:live,format=b,file=/home/myheapdump.hprof 18230

(2)用VisualVM打开dump文件

点击 文件->装入 选择你需要分析的dump文件后会出现下图分析界面。

1143b2029969230aca2b08b8102c0132.png

概要信息 (相当于Jinfo指令获取的信息)

这里面主要可以了解JVM环境配置、JDK版本,应用基本信息。

包括基本信息(dump文件的基本信息)、环境(jdk基本信息)、系统属性(应用参数信息)。

0e94e45e0af4a8c8ec122be4f41d59aa.png

类信息(相当于Jmap 指令获取的信息)

在这个栏目里面主要关注的是对应类型的对象 在内存中的实例对象实例树 、总占用空间大小分别是多少,如果是因为产生大对象、或者突然产生大批量的对象则可以通过这里定位到问题。

81a806e2a5f905001269aa14d1510c65.png

2-3.、VisualVM本地监控

本地监控很简单,打开VisualVM 就可以从左侧栏目里看到本机的应用,点击对应的应用就可以看到对应的内存、线程、GC信息。

ca8cbc4f4b5fc9fc61808e2c636d6ba9.png

2-4、VisualVM远程监控

VisualVM 不仅能监控本地的应用程序,还可以监控远程服务器上的应用,虽然远程监控一般不会用于生产环境的,但是在测试环境做一些压力测试做一些性能的预调优,这个时候使用VisualVM来远程监控测试服务器的JVM使用情况,这样有助于我们了解到JVM的实时运行状态而进行优化和调整。

第一步:应用配置jmx支持

需要使用VisualVM监控某个远程服务器的JVM应用,那么首先要对需要配置远程监控应用对MX的支持。

配置方式:jar包启动直接 java -jar 后面跟参数,tomcat启动则需编辑tomcat的catalina.sh配置文件增加JAVA_OPTS配置。

jar 包启动配置案例

 nohup java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.local.only=true -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=8999 -Dcom.sun.management.jmxremote.access.file=jmx.access -Dcom.sun.management.jmxremote.password.file=jmx.password -Djava.rmi.server.hostname=159.138.47.89 -jar jstx-server.jar&

需要注意的参数:

 Dcom.sun.management.jmxremote.port //指定jms通讯端口,这个随意只要不与其他应用冲突即可。Djava.rmi.server.hostname         //连接IP,填写当前服务器的外网IP。Dcom.sun.management.jmxremote.ssl //是否位加密连接。Dcom.sun.management.jmxremote.authenticate//是否进行权限连接认证,flase 不需要,ture的话就需要指定用户名,密码配置。management.jmxremote.access.file // 用户名 和对应用户的权限配置Dcom.sun.management.jmxremote.password.file //用户名对应的密码

创建用户名密码

如果Dcom.sun.management.jmxremote.authenticate 配置为ture则需要进行此步骤。

(1)编辑 jmx.access 文件添加用户名 并指定权限

命令

 vim jmx.access  

添加内容

 admin readwrite

(2) jmx.password文件里指定用户名和对应密码:

命令

 vim jmx.access  

添加内容

 admin 123456

(3)修改password,access文件访问权限

 Chmod –R 600 jmx.passwordChmod –R 600 jmx.access

第二步:建立内网公网IP映射

如果是云服务器则需要建立局域网与公网IP映射

 vim /etc/hosts

491d83ef51c6c3cfe238a56c829e752d.png

第三步:开放端口访问限制

防火墙:Dcom.sun.management.jmxremote.port 对应端口

云服务器安全组策略 开放Dcom.sun.management.jmxremote.port对应的端口

第四步:VisualVM进行远程连接

添加远程服务器

b295a333485af7aaa9e257d39906a65e.png

建立JMX连接

3566598112a7cb9affc12d6b80ff4d89.png

连接成功

67ad39934f42a4f74c979fa66eb5e1ed.png

3、第三方在线监控工具(Arthas)

Arthas 是Alibaba开源的Java诊断工具,它可以帮助我们解决在线环境的以下问题

  1. 监控到JVM的实时运行状态(涵盖Jps ,jstat ,jinfo ,jstack ,部分Jmap功能)。
  2. 在不需要重新部署服务的情况下修改业务代码。
  3. 以局视角来查看系统的运行状况。

3-1、Arthas 安装

(1)下载`

 curl -O https://arthas.aliyun.com/arthas-boot.jar

(2)启动

 java -jar arthas-boot.jar

(3)选择监控的应用

athas启动成功后会打印出来当前服务器的所有java进程,然后以编号的形式排列出来,在控制台输入你想要监控的应用编号即可进入arthas的监控控制台,这里我选择了编号为7的应用进行监控。

05bdbe90371c3a74497dab23b353838e.png

3-2、常用命令

(1)、查看系统实时运行状态(dashboard)

在控制台输入dashboard 回车后会看到下图对应的信息,这里主要展示了当前监控的进程信息、包括 实时的线程信息、内存分配和使用状态信息、系统环境信息。

22d75db4ce0d2a9df331c51302004bd7.png

(2)、查看应用线程信息(thread)

thead 可现实应用的运行线程情况,功能和jstack类似。

在控制台输入thread 可显示当前应用运行的线程信息。

 thread 

87ad048acaf5d9ff23dc1a8137a70a49.png

在控制台输入tread ID 可查看某一个线程的信息。

 tread  14 

6bd621298d914633e0e77bb6f885ce24.png

(3)、修改应用中的某个类代码并动态编译和加载类到JVM

如果需要修改正在运行中的应用程序代码就很可能需要下面几个指令来帮助你完成此动作。

第一步:反编译需要修改的类(jad)

jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,通过jad可以查看到应用正在运行的代码情况,这里我们使用jad 是为了确认线上某个类的运行的代码和我预期的一致,如果不一致需要修改或者增加代码则需通过后面的指令完成。

指令:jar 类全路径名

 jad  com.xx.xx.xx.TestController

第二步:把修改完的类动态加载到JVM(mc 和redefine)

如果我们需要修改正在运行中的应用代码,那么我们可以先准备好已经修改好的类,然后使用redefine指令把最新的代码编译加载到JVM内存里,从而达到不停应用程序修改业务代码的目的。

1、编译.java文件生成.class

 mc /tmp/TestController.java

2、加载外部的.class到 jvm。

 redefine /tmp/TestController.class

3-3、其他命令介绍

详细使用参考官网:https://arthas.aliyun.com/doc/advanced-use.html

1、基础命令

  • help——查看命令帮助信息
  • cat——打印文件内容,和linux里的cat命令类似
  • echo–打印参数,和linux里的echo命令类似
  • grep——匹配查找,和linux里的grep命令类似
  • tee——复制标准输入到标准输出和指定的文件,和linux里的tee命令类似
  • pwd——返回当前的工作目录,和linux命令类似
  • cls——清空当前屏幕区域
  • session——查看当前会话的信息
  • reset——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
  • version——输出当前目标 Java 进程所加载的 Arthas 版本号
  • history——打印命令历史
  • quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
  • stop——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
  • keymap——Arthas快捷键列表及自定义快捷键

2、jvm相关

  • dashboard——当前系统的实时数据面板
  • thread——查看当前 JVM 的线程堆栈信息
  • jvm——查看当前 JVM 的信息
  • sysprop——查看和修改JVM的系统属性
  • sysenv——查看JVM的环境变量
  • vmoption——查看和修改JVM里诊断相关的option
  • perfcounter——查看当前 JVM 的Perf Counter信息
  • logger——查看和修改logger
  • getstatic——查看类的静态属性
  • ognl——执行ognl表达式
  • mbean——查看 Mbean 的信息
  • heapdump——dump java heap, 类似jmap命令的heap dump功能

3、class/classloader相关

  • sc——查看JVM已加载的类信息
  • sm——查看已加载类的方法信息
  • jad——反编译指定已加载类的源码
  • mc——内存编译器,内存编译.java文件为.class文件
  • redefine——加载外部的.class文件,redefine到JVM里
  • dump——dump 已加载类的 byte code 到特定目录
  • classloader——查看classloader的继承树,urls,类加载信息,使用classloader去getResource

4、monitor/watch/trace相关

请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 stop 或将增强过的类执行 reset 命令。
  • monitor——方法执行监控
  • watch——方法执行数据观测
  • trace——方法内部调用路径,并输出方法路径上的每个节点上耗时
  • stack——输出当前方法被调用的调用路径
  • tt——方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

5、profiler/火焰图

  • profiler–使用async-profiler对应用采样,生成火焰图

6、options

  • options——查看或设置Arthas全局开关