当前位置: 首页 > news >正文

有哪些企业可以做招聘的网站有哪些高级网站开发培训

有哪些企业可以做招聘的网站有哪些,高级网站开发培训,百度热议排名软件,建设集团有限公司简介基本概念 云原生这么多微服务#xff0c;当然需要一个诊断利器来排查问题。 Arthas 是阿里开源的 Java 诊断工具#xff0c;深受开发者喜爱。在线排查问题#xff0c;无需重启#xff1b;动态跟踪 Java 代码#xff1b;实时监控 JVM 状态。Arthas 支持 JDK 6#xff0c…基本概念 云原生这么多微服务当然需要一个诊断利器来排查问题。 Arthas 是阿里开源的 Java 诊断工具深受开发者喜爱。在线排查问题无需重启动态跟踪 Java 代码实时监控 JVM 状态。Arthas 支持 JDK 6支持 Linux/Mac/Windows采用命令行交互模式同时提供丰富的 Tab 自动补全功能进一步方便进行问题的定位和诊断。 官方定义为Java应用诊断利器截至目前github收获30.2K个star。 可以用来查看线程内存GC和运行时状态查看入参/返回值/异常快速定位应用的热点生成火焰图等功能帮助更快排查疑难问题。本文主要讲述常见命令的使用。 常见命令 启动arthas-demo(案例程序) 执行如下命令下载 arthas-demo.jar再用java -jar命令启动案例程序 wget https://arthas.aliyun.com/arthas-demo.jar; java -jar arthas-demo.jar启动arthas-boot诊断工具程序 执行如下命令下载arthas-boot.jar再用java -jar命令启动 wget https://arthas.aliyun.com/arthas-boot.jar; java -jar arthas-boot.jararthas-boot是Arthas的启动程序它启动后会列出所有的Java进程用户可以选择需要诊断的目标进程。 选择要诊断的Java程序我这里输入 1 再按回车键Enter。 Attach成功之后会打印Arthas LOGO。 输入 help 可以获取到Arthas相关命令帮助信息。 [arthas1266]$ helpNAME         DESCRIPTION                                                                             help         Display Arthas Help                                                                     auth         Authenticates the current session                                                       keymap       Display all the available keymap for the specified connection.                          sc           Search all the classes loaded by JVM                                                    sm           Search the method of classes loaded by JVM                                              classloader  Show classloader info                                                                   jad          Decompile class                                                                         getstatic    Show the static field of a class                                                        monitor      Monitor method execution statistics, e.g. total/success/failure count, average rt, fail rate, etc.                                                                             stack        Display the stack trace for the specified class and method                              thread       Display thread info, thread stack                                                       trace        Trace the execution time of specified method invocation.                                watch        Display the input/output parameter, return object, and thrown exception of specified me thod invocation                                                                         tt           Time Tunnel                                                                             jvm          Display the target JVM information                                                      memory       Display jvm memory info.                                                                perfcounter  Display the perf counter information.                                                   ognl         Execute ognl expression.                                                                mc           Memory compiler, compiles java files into bytecode and class files in memory.           redefine     Redefine classes. see Instrumentation#redefineClasses(ClassDefinition...)              retransform  Retransform classes. see Instrumentation#retransformClasses(Class...)                  dashboard    Overview of target jvms thread, memory, gc, vm, tomcat info.                           dump         Dump class byte array from JVM                                                          heapdump     Heap dump                                                                               options      View and change various Arthas options                                                  cls          Clear the screen                                                                        reset        Reset all the enhanced classes                                                          version      Display Arthas version                                                                  session      Display current session information                                                     sysprop      Display, and change the system properties.                                              sysenv       Display the system env.                                                                 vmoption     Display, and update the vm diagnostic options.                                          logger       Print logger info, and update the logger level                                          history      Display command history                                                                 cat          Concatenate and print files                                                             base64       Encode and decode using Base64 representation                                           echo         write arguments to the standard output                                                  pwd          Return working directory name                                                           mbean        Display the mbean information                                                           grep         grep command for pipes.                                                                 tee          tee command for pipes.                                                                  profiler     Async Profiler. https://github.com/jvm-profiling-tools/async-profiler                   vmtool       jvm tool                                                                                stop         Stop/Shutdown Arthas server and exit the console.   与linux同样规则的命令此处不再赘述。如historycatechopwdgrep。 系统的实时数据面板 dashboard 命令 dashboard 命令可以查看当前系统的实时数据面板。可以查看到CPU、内存、GC、运行环境等信息。 输入 q 或者 CtrlC 可以退出dashboard命令。 打印线程ID 的栈 thread thread 1 命令会打印线程ID 1的栈。用 thread 1 | grep main( 查找到main class。 查找JVM里已加载的类 sc/sm 可以通过 sc 命令来查找JVM里已加载的类,通过-d参数可以打印出类加载的具体信息很方便查找类加载问题。 [arthas1266]$ sc -d *MathGameclass-info        demo.MathGame                                                                                             code-source       /home/shell/arthas-demo.jar                                                                               name              demo.MathGame                                                                                             isInterface       false                                                                                                     isAnnotation      false                                                                                                     isEnum            false                                                                                                     isAnonymousClass  false                                                                                                     isArray           false                                                                                                     isLocalClass      false                                                                                                     isMemberClass     false                                                                                                     isPrimitive       false                                                                                                     isSynthetic       false                                                                                                     simple-name       MathGame                                                                                                  modifier          public                                                                                                    annotation                                                                                                                  interfaces                                                                                                                  super-class       -java.lang.Object                                                                                        class-loader      -sun.misc.Launcher$AppClassLoader1b6d3586                                                               -sun.misc.Launcher$ExtClassLoader107df6e5                                                             classLoaderHash   1b6d3586                                                                                                  Affect(row-cnt:1) cost in 50 ms.sc支持通配比如搜索所有的StringUtils sc *StringUtils查找UserController的ClassLoader [arthas1266]$ sc -d com.example.demo.arthas.user.UserController | grep classLoaderHashclassLoaderHash   19469ea2sm命令则是查找类的具体函数。比如 sm java.math.RoundingMode通过-d参数可以打印函数的具体属性 sm -d java.math.RoundingMode查找特定的函数比如查找构造函数 sm java.math.RoundingMode init反编译代码 jad命令 jad demo.MathGame 通过--source-only参数可以只打印出在反编译的源代码 jad --source-only com.example.demo.arthas.user.UserController动态执行代码 ognl 命令 在Arthas里有一个单独的ognl命令可以动态执行代码。这个有点秀啊 调用static函数 ognl java.lang.Systemout.println(hello ognl)获取静态类的静态字段 获取UserController类里的logger字段 ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader com.example.demo.arthas.user.UserControllerlogger通过-x参数控制返回值的展开层数。比如 ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader -x 2 com.example.demo.arthas.user.UserControllerlogger执行多行表达式赋值给临时变量返回一个List ognl #value1SystemgetProperty(java.home), #value2SystemgetProperty(java.runtime.name), {#value1, #value2}OGNL特殊用法请参考https://github.com/alibaba/arthas/issues/71 OGNL表达式官方指南https://commons.apache.org/proper/commons-ognl/language-guide.html 查看函数的参数/返回值/异常信息 watch 命令 watch demo.MathGame primeFactors returnObj查看JVM信息 sysprop sysenv jvm dashboard sysprop sysprop 打印所有的System Properties信息。 指定单个keysysprop user.dir。 通过grep过滤 sysprop | grep user。 设置新的valuesysprop testKey testValue。 sysenv sysenv 命令可以获取到环境变量。和sysprop命令类似。 jvm jvm 命令会打印出JVM的各种详细信息。 dashboard dashboard 命令可以查看当前系统的实时数据面板。 重置增强类 reset 命令 通过reset命令可以重置增强类将被 Arthas 增强过的类全部还原Arthas 服务端关闭时会重置所有增强过的类。Arthas在 watch/trace 等命令时实际上是修改了应用的字节码插入增强的代码。显式执行 reset 命令可以清除掉这些增强代码。 reset 还原指定类: reset demo.MathGame还原所有增强类 reset查看当前会话信息 session tee 命令 类似传统的tee命令 用于读取标准输入的数据并将其内容输出成文件。 tee指令会从标准输入设备读取数据将其内容输出到标准输出设备同时保存成文件。 查看当前Arthas版本 version [arthas1710]$ version 3.6.2退出Arthas 输入 exit 或者 quit 命令可以退出Arthas当前session。执行 stop 命令彻底退出Arthas。 PS所有命令都可以通过 -h 参数查看帮助信息。 实操案例 排查函数调用异常 通过curl 请求接口只能看到返回异常但是看不到具体的请求参数和堆栈信息。 shellAlicloud:~$ curl http://localhost:61000/user/0 {timestamp:1655435063042,status:500,error:Internal Server Error,exception:java.lang.IllegalArgumentException,message:id  1,path:/user/0}查看UserController的 参数/异常 在Arthas里执行 watch com.example.demo.arthas.user.UserController * {params, throwExp}第一个参数是类名支持通配 第二个参数是函数名支持通配 访问 curl http://localhost:61000/user/0,watch命令会打印调用的参数和异常 再次通过curl 调用可以在arthas里面查看到具体的异常信息。 把获取到的结果展开可以用-x参数 watch com.example.demo.arthas.user.UserController * {params, throwExp} -x 2返回值表达式 在上面的例子里第三个参数是返回值表达式它实际上是一个ognl表达式它支持一些内置对象 loader clazz method target params returnObj throwExp isBefore isThrow isReturn 比如返回一个数组 watch com.example.demo.arthas.user.UserController * {params[0], target, returnObj}条件表达式 watch命令支持在第4个参数里写条件表达式比如 当访问 user/1 时watch命令没有输出 当访问 user/101 时watch会打印出结果。 当异常时捕获 watch命令支持-e选项表示只捕获抛出异常时的请求 watch com.example.demo.arthas.user.UserController * {params[0],throwExp} -e按照耗时进行过滤 watch命令支持按请求耗时进行过滤比如 watch com.example.demo.arthas.user.UserController * {params, returnObj} #cost200热更新代码 这个也是真的秀。 访问 http://localhost:61000/user/0 会返回500异常 shellAlicloud:~$ curl http://localhost:61000/user/0 {timestamp:1655436218020,status:500,error:Internal Server Error,exception:java.lang.IllegalArgumentException,message:id  1,path:/user/0}通过热更新代码修改这个逻辑。 jad反编译UserController jad --source-only com.example.demo.arthas.user.UserController  /tmp/UserController.javajad反编译的结果保存在 /tmp/UserController.java文件里了。 再打开一个Terminal 窗口然后用vim来编辑/tmp/UserController.java vim /tmp/UserController.java比如当 user id 小于1时也正常返回不抛出异常 GetMapping(value{/user/{id}}) public User findUserById(PathVariable Integer id) {logger.info(id: {}, (Object)id);if (id ! null  id  1) {return new User(id, name  id);// throw new IllegalArgumentException(id  1);}return new User(id.intValue(), name  id); }sc查找加载UserController的ClassLoader [arthas1266]$ sc -d *UserController | grep classLoaderHashclassLoaderHash   19469ea2classLoaderHash 是19469ea2后面需要使用它。 mc 保存好/tmp/UserController.java之后使用mc(Memory Compiler)命令来编译并且通过-c或者–classLoaderClass参数指定ClassLoader mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp[arthas1266]$ mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp Memory compiler output: /tmp/com/example/demo/arthas/user/UserController.class Affect(row-cnt:1) cost in 2879 ms.也可以通过mc -c /tmp/UserController.java -d /tmp使用-c参数指定ClassLoaderHash: mc -c 19469ea2 /tmp/UserController.java -d /tmpredefine 再使用redefine命令重新加载新编译好的UserController.class [arthas1266]$ redefine /tmp/com/example/demo/arthas/user/UserController.class redefine success, size: 1, classes: com.example.demo.arthas.user.UserController热修改代码结果 redefine成功之后再次访问 user/0 结果正常 shellAlicloud:~$ curl http://localhost:61000/user/0 {id:0,name:name0}动态更新应用Logger Level 查找UserController的ClassLoader [arthas1266]$ sc -d *UserController | grep classLoaderHashclassLoaderHash   19469ea2用ognl获取logger ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader ‘com.example.demo.arthas.user.UserControllerlogger’[arthas1266]$ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader com.example.demo.arthas.user.UserControllerlogger Logger[serialVersionUIDLong[5454405123156820674],FQCNString[ch.qos.logback.classic.Logger],nameString[com.example.demo.arthas.user.UserController],levelnull,effectiveLevelIntInteger[20000],parentLogger[Logger[com.example.demo.arthas.user]],childrenListnull,aainull,additiveBoolean[true],loggerContextLoggerContext[ch.qos.logback.classic.LoggerContext[default]], ]可以知道UserControllerlogger实际使用的是logback。可以看到levelnull则说明实际最终的level是从root logger里来的。 单独设置UserController的logger level ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader com.example.demo.arthas.user.UserControllerlogger.setLevel(ch.qos.logback.classic.LevelDEBUG)再次获取UserControllerlogger可以发现已经是DEBUG了。 修改logback的全局logger level 通过获取root logger可以修改全局的logger level ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader org.slf4j.LoggerFactorygetLogger(root).setLevel(ch.qos.logback.classic.LevelDEBUG)获取Spring Context,在获取 bean,再调用函数 使用tt命令获取到spring context tt即 TimeTunnel它可以记录下指定方法每次调用的入参和返回信息并能对这些不同的时间下调用进行观测。 官方tt说明https://arthas.aliyun.com/doc/tt.html tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod访问user/1 curl http://localhost:61000/user/1可以看到tt命令捕获到了一个请求 输入 q 或者 Ctrl C 退出上面的 tt -t命令。 使用tt命令从调用记录里获取到spring context tt -i 1000 -w target.getApplicationContext()获取spring bean并调用函数 tt -i 1000 -w ‘target.getApplicationContext().getBean(“helloWorldService”).getHelloMessage()’结果如下 [arthas1266]$ tt -i 1000 -w target.getApplicationContext().getBean(helloWorldService).getHelloMessage() String[Hello World] Affect(row-cnt:1) cost in 1 ms.排查HTTP请求返回401 请求接口没有权限的时候一般就返回401 Unauthorized。 401通常是被权限管理的Filter拦截了那么到底是哪个Filter处理了这个请求返回了401 跟踪所有的Filter函数 开始trace trace javax.servlet.Filter *可以在调用树的最深层找到AdminFilterConfig$AdminFilter返回了401 ---[3.806273ms] javax.servlet.FilterChain:doFilter() |   ---[3.447472ms] com.example.demo.arthas.AdminFilterConfig$AdminFilter:doFilter() |       ---[0.17259ms] javax.servlet.http.HttpServletResponse:sendError()通过stack获取调用栈 上面是通过trace命令来获取信息从结果里我们可以知道通过stack跟踪HttpServletResponse:sendError()同样可以知道是哪个Filter返回了401 执行 stack javax.servlet.http.HttpServletResponse sendError params[0]401访问可以看到如下堆栈信息 查找Top N线程 查看所有线程信息 thread查看具体线程的栈 查看线程ID 2的栈 thread 2查看CPU使用率top n线程的栈 thread -n 3查看5秒内的CPU使用率top n线程栈 thread -n 3 -i 5000查找线程是否有阻塞 thread -b更多使用查看 Github地址: https://github.com/alibaba/arthas 文档地址: https://arthas.aliyun.com/doc/ 转自blog.csdn.net/qq_35427589/article/details/125331696
http://www.zqtcl.cn/news/718415/

相关文章:

  • 在建设主题网站时邯郸房产信息网恋家网
  • 保山做网站建设做网站zwnet
  • 南阳做网站推广自助个人免费网站
  • 企业做网站怎么做高校档案室网站建设
  • 辽宁省建设厅网站升级期货交易软件定制开发
  • 网站建设公司工资设置mufen wordpress
  • 资阳网站网站建设月夜直播免费完整版
  • 自己的网站打不开了网站建设维护成本
  • 最便宜做网站c2c网站建站的标准
  • 家里电脑做网站服务器下载中国移动商旅100最新版本
  • 深圳建站公司开发费用做网站网页的工作怎么样
  • 网站工程师平均工资网站开发合同里的坑
  • 南通公司建站模板品牌网站建设小蝌蚪
  • 网站备案号 有效期微信小程序开发视频完整教程
  • 给公司做网站需要什么信息html制作百度登录页面
  • 济南市建设执业资格注册中心网站小程序源码模板下载
  • 免费做网站怎么做网站网页生成app制作
  • 网站建设中的财务预算广州网站制作
  • 经营范围网站建设wordpress主题去除友情链接
  • ip开源网站FPGA可以做点什么国外购物平台排行榜前十名
  • 温州网站推广优化公司专业做网站建设公司排名
  • 网站广告推广哪家好wordpress漏洞大全
  • 做a小视频免费观看网站视觉传达设计网站
  • 网站建设属于网络还是软件服务器销售网站源码
  • 上海建设工程咨询网 首页郑州seo野狼
  • 建设网站需要注意什么手续禅城网站设计
  • 重庆网站页面优化wordpress fm
  • 淄博网站建设企业做网站原型图
  • 电子商务网站开发视频软件研发过程管理
  • 网站建设实施计划包括wordpress编程视频教程