00:00
下面啊,咱们来学习这个第二章,诶第二章呢,叫做GM监控及诊断工具,是关于命令行篇的啊后续的话呢,咱们每个章节都有一个专门的专题,那来咱们来看一下这个第二章。好打开首先的话呢,咱们来看一下这个概述啊,看这里边描述的这个问题。这里说性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验之上的今天,解决好应用的性能问题能够带来非常大的收益啊,这块的话呢,呃,相对来说官方一些啊,大家听一听就可以了啊,应该没有过多的需要给大家呢,再展开解释的点。那有一个需要大家跟大家去交互的,就是关于这个用户体验哈,呃,在一五年的时候呢,移动互联网应该是达到一个高峰,呃,各个这个移动端的这个产品出来的这个很多,有一个职位呢,当时非常火爆啊,叫做产品经理,那产品经理呢,我们说直接决定了一个产品最终的一个形态,对吧?啊直接呢影响的就是用户的一个体验啊,当时呢,是非常的一个职业啊好,那么当然现在也还可以啊,那接着我们往下看。
01:07
说呢,Java作为最流行的编程语言之一,其应用性能的诊断呢,一直受到业界的广泛关注,当然这个一方面呢,是因为Java的这个用户使用量比较大,另外一个层面呢,是因为Java呢,我们说主要的是不是还是做这个后台这块啊,诶我们画个图哈,Java呢主要做后台,那我们基于各种不同的这个终端啊,你是客户端也好,是浏览器也好,反应过来我们是有可能面对一个高并发的场景的,对吧。诶,高并发的场景,比如说像我们常见的一些,比如淘宝啊,呃,京东啊,这个还有其他的一些这个呃,访问量非常高的这样的一些软件,对吧?它是有可能会出现这种高并发的场景,在这种场景下的话呢,我们就特别需要注重这个系统的这个性能,对吧?诶能够达到这种高可用的这样的一个情况,那么对于这个终端来讲的话呢,其实呃也有优化的空间,对吧?这个优化呢,更多的是我们尽量呢你呃数据呢,能从内存中调就不要从这个磁盘中去调啊,这个速度要更快一点,它跟我们后台这块去优化呢,这个重要性啊,差别还是挺大的,因为你想后台如果要是宕机了,要是阻塞的话呢,整个所有的这个客户端是不是全都访问不了啊,而我们这个客户端的话呢,你要是具体某一个诶稍微差一点,它不会影响到别人对吧?哎,属于这样的情况啊。
02:23
我们说呢,可能造成Java应用出现性能问题的因素呢很多,比如说这个线程的控制,那磁盘的读写啊,比如说我们基于缓存级别的读数据,那就比读磁盘呢,要更快一些数据库的访问啊,那我们呢,相关的涉及到这个SQ的一个优化,还涉及到呢,就是我们这个表结构的一个设计,对吧,等等,网络的IO垃圾收集等等啊这呢都会影响到我们应用程序的性能啊,咱们在这个第八当中,第八章当中也会讲到除了这个GM优化之外的一些其他的场景。那说要想定位这些问题啊,一款优秀的性能诊断工具呢,就必不可少啊,就必不可少,那我们说在给一个系统去定位问题的时候呢,你看这里边我写了这样一句话啊,说使用数据呢来说明问题,使用知识呢来分析问题,使用工具呢来处理问题,最终目的呢,我们是要处理问题对吧?哎,其实我们也不光是这个,当前咱们要讲的这个性能监控与调优了啊,在其他的场景当中,其实都是这样的一个特点,对吧。
03:24
那也就是说呢,我们不仅要学习这个理论知识,咱们还需要呢,去掌握相关的一些工具的一个使用,对吧?来便于我们去解决问题啊好,那么我们关于这个性能工具的这个讲解的话呢,咱们是两个章节啊,这一张呢,是命令航片,咱们还有下边这一张呢,是关于这个图形化界面片,对吧?那同时的话呢,我们其实还有像这个sky working啊,Arms啊等等这样的是针对于分布式呃应用的这个性能监控的一个工具,或者叫这个系统啊,咱们后续呢,给大家一一展开去介绍,这一张呢,我们主要来看这个简单的命令行的这样的一些工具啊,啊这块还有一句话叫做无监控不调优。
04:03
诶无监控不调优,呃,想到一个呢,叫这个无规矩啊,不成方圆对吧,就是没有监控的话呢,我们就没有办法很好的进行调优了啊,没有规矩的话呢,我们就没办法去乘一个方或者是圆了啊类似的这样一个道理啊呃这呢就提到了我们这个监控的一个重要性,对吧?啊,那监控的话呢,毫无疑问我们需要使用这个具体的工具。啊,一说到这儿的话呢,其实我们想到一个,呃,这个生活中的啊,一个呢叫做中医,一个叫做西医啊,这个其实是有一些区别的,对吧,这个中医的话呢,一般咱们要看中医,一般都爱找那个是不是年龄大一些的叫老中医觉得更靠谱,对吧?因为中国这种中医呢,它讲究叫望闻问切,其实呢,比较依赖于这个医生的自己的一个经验啊,而这个西医的话呢,你会发现呢,一般他都会,呃是不是做一些仪器的检查呀。呃,通常呢,咱们大家呢,如果去医院里边看这个西医的话呢,呃,可能跟医生呢,没聊几句啊,就说你去做个检查,做个B超,做个核磁共振啊,抽个血对吧等等的,那这呢都是依赖于这些仪器啊,那像这个西医的话呢,其实要想这个叫什么,我们说这个学成,那比这个中医呢,实际上是要简单一些,对吧?呃,因为有这个工具可以去参照了啊,那那就相当于西医呢,叫叫什么,哎巫医气啊,不看病啊,哎比较依赖于这些仪器的数据啊。
05:23
好,那这里边的话呢,我们看一看咱们现在要讲的这个简单的命令行的这个工具,这个命令行这个工具呢,实际上是在一个目录下,这个目录呢,大家也不陌生,就是咱们安装JDK的这个B目录啊,B目录里边就有我们这样的一些工具啊,那咱们找一下啊,呃,首先我这块看一下,哎,我当前呢,用的这个JDK的一个版本。好,我这用的是1.8的这个版本。啊,因为我电脑里边装的JDK的版本比较多啊,我得看看配的环境变量是谁啊。那我这里边呢,我就直接用谁啊,找这个1.8的就它啊好打开之后呢,我们看下这个B目录,这个B目录下呢,咱们有两个非常熟悉的Java c和Java这个呢,一个是用来编译的,一个是用来这个运行的,对吧?哎,我们不多介绍啊,那除了这两个之外呢,还有其他的一些啊,像我们这里边,比如说接CMD啊,接console啊,接接infer啊,这个go勾S呢,是主要是用来解释运行这个JS程序的啊啊接map GMC啊,GPS啊,一会儿我们这个首先讲的就是GPS啊,J state j sta等等啊等等这些呢,就是咱们要讲解的,呃,这些命令行的一些工具啊,这些工具呢,咱们可以看作是Oracle是不是附赠给我们的礼物啊。
06:38
啊,除了我们能够解释运行啊Java程序之外呢,呃,还能够给我们提供了一些原生的啊,去监控Java程序的一些工具。啊,一些工具,好,另外一个维度呢,我们要说的是什么呢?就这些工具呢,大家直接呃,你双击一下呢,相当于就是做了一个这个调用啊,一个执行对吧?那么这里呢,其实大家也可以看成是一个它叫可执行性文件啊,实际上呢,类似一个快捷键啊,你看这个文件本身其实也比较小是吧,那这个文件它本身对应的这个源码在哪呢?来我们看一下啊。
07:11
大家呢,往上调一层,这是不是有一个叫Li目录啊,这个Li打开之后啊,有一个jar文件啊,这个jar文件的话呢,我们知道都是点class直接码文件呢,打包以后生成的啊,我们把它呢进行一个解压。把它解压开,解压开以后呢,我们打开这个tools里边是不是有一个叫散是吧,再打开,哎这呢有个叫tools,打开之后呢,大家你会发现像我们刚才提到的几个JCMD啊,J infer j map jps j sta呃,J state等等是不是就都在这里啊啊那这里边你打开之后呢,是不是就是我们刚才提到的炸包里边的自解码文件吗?啊,也就是说呢,这是两个Java源文件编译之后生成的资金码文件,这就是GPS实际执行的这样的一个代码结构了,对吧?哎,就它啊,那如果大家呢,你有兴趣想看一看这个对应的源码是什么,我这儿呢,也附着了一个链接地址在课件里边,当然你把这个呢,CTRLC一下。
08:07
哎,放到咱们这个浏览器里边啊,CTRLV。好拿过来,那这呢,我们看的是这个open gdk啊,我用的这个版本呢,是JDK11啊,JDK11在这里边呢,比如我们想看这个GPS,它里边这个源码是什么样子的啊,你点一下进来看这呢是不是就有两个Java文件啊,这两个文件其实就正好对应着看,咱们刚才这块看到的是两个Java文件编译之后生成的直接版文件嘛,那你把这个呃,GPS呢,你点击一下打开,这呢就是它对应的这个编码信息。啊,如果大家有兴趣去读一读的话呢,就可以来打开看一看就行啊就行好,那实际上呢,我们说对于大家的要求的话呢,就是只需要大家能够熟练掌握常见的这些命令行指令如何去使用就可以了,嗯,咱们一般呢,还不需要到看源码那个层面。啊,这个大家关注一下,除非呢,你需要对这个指令呢进行一个修改是吧?诶我们才需要用到这个源码,OK,这呢就我们先做一个简单的概述,下边呢,我们就意思来进行介绍。
我来说两句