通过关键词优化提升企业网站centos yum wordpress
web/
2025/10/1 6:51:37/
文章来源:
通过关键词优化提升企业网站,centos yum wordpress,官方网站下载qq最新版,铜川市新区建设局网站Arthas是阿里巴巴开源的Java诊断工具#xff0c;采用命令行交互的形式进行问题的定位与诊断。它能够帮助你.
解决以下问题#xff1a;
这个类从哪个 jar 包加载的#xff1f;为什么会报各种类相关的 Exception#xff1f;我改的代码为什么没有执行到#xff1f;难道是我…Arthas是阿里巴巴开源的Java诊断工具采用命令行交互的形式进行问题的定位与诊断。它能够帮助你.
解决以下问题
这个类从哪个 jar 包加载的为什么会报各种类相关的 Exception我改的代码为什么没有执行到难道是我没 commit分支搞错了遇到问题无法在线上 debug难道只能通过加日志再重新发布吗线上遇到某个用户的数据处理有问题但线上同样无法 debug线下无法重现是否有一个全局视角来查看系统的运行状况有什么办法可以监控到JVM的实时运行状态怎么快速定位应用的热点生成火焰图怎样直接从JVM内查找某个类的实例 下面就实际常用到的功能做一些简单介绍
Arthas 安装与使用
https://github.com/alibaba/arthas
在局域网的离线环境下需要下载arthas的全量包
Idea Arthas 插件安装
可能你会觉得写Arthas的命令很繁琐初学者写命令效率低Idea中arthas插件可以解决这一问题。 在Idea插件中搜索“arthas”下载“arthas-idea”插件如下图所示
使用步骤
将arthas包复制到服务器查找对应java服务的进程号
[roothost-10-19-141-49 hik]# lsof -i:8041
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Jsvc 60164 root 398u IPv4 2662812937 0t0 TCP *:8041 (LISTEN)执行以下命令进入arthas命令界面选择对应的进程号输入数字选择具体的进程号;
常用基础命令:
help——查看命令帮助信息
cat——打印文件内容和 linux 里的 cat 命令类似
pwd——返回当前的工作目录和 linux 命令类似
cls——清空当前屏幕区域
session——查看当前会话的信息
reset——重置增强类将被 Arthas 增强过的类全部还原Arthas 服务端关闭时会重置所
有增强过的类
version——输出当前目标 Java 进程所加载的 Arthas 版本号
history——打印命令历史
quit——退出当前 Arthas 客户端其他 Arthas 客户端不受影响
shutdown——关闭 Arthas 服务端所有 Arthas 客户端全部退出
keymap——Arthas 快捷键列表及自定义快捷键
sysenv: Display the system env.
sysprop: Display, and change the system properties
reset: Reset all the enhanced classes
dump: Dump class byte array from JVM
options View and change various Arthas options
getstatic Show the static field of a class
sc Search all the classes loaded by JVM
sm Search the method of classes loaded by JVM
classloader Show classloader info
dashboard显示出线程(按照 cpu 占用百分比倒排)、内存(堆空间实时情况)、GC
情况等数据 thread用来查看当前 jvm 中的线程信息. jvm查看当前 jvm 信息 watch能方便的观察到指定方法的调用情况,返回值、抛出异常、入参(特殊值、异常没有捕获排查)
watch [class-pattern] [method-pattern] [express] params其中class-pattern为类名的表达式method-pattern为方法名表达式express为观察表达式 params是可以添加的一些参数信息。具体可查看官方文档。 在使用Arthas前定位排查数据问题主要有两种方式
日志排查前需要写入日志代码重新打包部署不适合生产环境。远程Debug需开设debug端口安全性差阻塞环境中的应用程序对使用的其他人员产生影响不利于合作。
而使用Arthas定位问题对环境几乎无影响定位效率高。
示例
watch com.hikvision.omcmdb.web.model.ModelRestful deleteModelCategory
{params,returnObj,throwExp} -n 5 -x 3 -n 5 表示只执行五次防止被刷屏 -x 2 来指定打印对象的属性遍历深度
trace方法内部调用路径并输出方法路径上的每个节点上耗时(性能问题调用链问题)
trace命令查看方法内部的调用路径并且可以查看每个路径上的耗时。其使用方式如下
trace [class-pattern] [method-pattern] [condition-express] params其中class-pattern为类名的表达式method-pattern为方法名表达式condition-express为条件表达式params是可以添加的一些参数信息。具体可查看官方文档。 下面为一次使用trace命令定位接口超时问题实例
示例2 下面为一次使用trace命令定位接口超时问题实例 一次通过F12发现控制台一个接口很长时间没有响应数据该接口用于查看工单的待办数量于是使用 trace命令监控该接口如下图所示 可以看到方法内部调用OrderCommonService.orderStatistics()方法时耗时了60秒之多严重超时了 于是继续使用trace命令监控OrderCommonService.orderStatistics()方法进一步定位超时位置如此方 式最终定位出是由于调用HOSP的查询用户区域权限方法引发的超时。整个过程图如下所示
trace com.hikvision.omcmdb.web.model.ModelRestful deleteModelCategory -n 5 --
skipJDKMethod falsemonitor方法执行监控(性能问题排查一段时间内的性能指标) 统计每个接口的运行情况
$ monitor -c 5
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFace
XRestServiceImpl saveDeployFaceDetailInfo
Press Q or CtrlC to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 156 ms.
timestamp class
method total success fail
avg-rt(ms) fail-rate
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
------------------------
2019-08-20 09:18:13
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFace
XRestServiceImpl saveDeployFaceDetailInfo 1 1 0 9.01 0.00%
timestamp class
method total success fail
avg-rt(ms) fail-rate
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
------------------------
2019-08-20 09:18:18
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFace
XRestServiceImpl saveDeployFaceDetailInfo 1 1 0 2.81 0.00%
timestamp class
method total success fail
avg-rt(ms) fail-rate
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
------------------------
2019-08-20 09:18:23
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFace
XRestServiceImpl saveDeployFaceDetailInfo 0 0 0 0.00 0.00%
timestamp class
method total success fail
avg-rt(ms) fail-rate
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
------------------------
2019-08-20 09:18:28
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFace
XRestServiceImpl saveDeployFaceDetailInfo 1 1 0 2.54 0.00%stack获取方法从哪里执行的调用栈(用途源码学习调用堆栈了解调用流程) 查看方法的调用路径
stack
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFace
XRestServiceImpl saveDeployFaceDetailInfo
Press Q or CtrlC to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 147 ms.
ts2019-08-20 09:14:29;thread_nameXNIO-2 task-
125;id101;is_daemonfalse;priority5;TCCLorg.springframework.boot.loader.LaunchedURL
ClassLoader55183b20
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFac
eXRestServiceImpl.saveDeployFaceDetailInfo()
at
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
at
org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.jav
a:294)
at
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:248)
at
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:235)
at
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:402)
at
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:209)
at
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletCo
ntainerDispatcher.java:227)
at
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDis
patcher.java:56)
at
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDis
patcher.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java
:129)
at
org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(Ap
plicationContextHeaderFilter.java:55)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java
:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java
:131)
at
org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebReque
stTraceFilter.java:111)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java
:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java
:131)
at
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFil
ter.java:99)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java
:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java
:131)
at
org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormCo
ntentFilter.java:109)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java
:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java
:131)
at
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMetho
dFilter.java:93)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java
:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java
:131)
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncod
ingFilter.java:197)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java
:107)tt方法执行数据的时空隧道记录下指定方法每次调用的入参和返回信息并
能对这些不同的时间下调用进行观测
jad 反编译具体类
jad
com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl.DeployFace
XRestServiceImpl
ClassLoader:
-sun.misc.Launcher$AppClassLoaderc387f44
-sun.misc.Launcher$ExtClassLoader56de6d6b
Location:
/opt/opsmgr/web/components/xalarm.1/bin/xalarm-acs/lib/xalarm-acs-provider-
1.1.1000.RELEASE.jar
/*
* Decompiled with CFR 0_132.
*/
package com.hikvision.ga.xalarm.acs.modules.provider.balarm.api.deploy.service.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hikvision.ga.common.BasePage;
import com.hikvision.ga.common.BaseResult;
import com.hikvision.ga.common.BusinessException;
import com.hikvision.ga.logger.build.HikGaLoggerFactory;
import com.hikvision.ga.logger.log.HikGaLogger;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.dto.DeployFaceDTO;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.dto.DeployFaceForm;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.dto.ResourceDto;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.mapper.entity.DeployFace;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.query.dto.CondiFaceLibDTO;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.res.dto.DynTreeNode;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.res.dto.FaceScopeCheck;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.res.dto.Result4FaceLibDTO;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.res.dto.TreeNodeParams;
import com.hikvision.ga.xalarm.acs.balarm.api.deploy.service.DeployFaceXRestService;
import com.hikvision.ga.xalarm.acs.modules.deploy.service.DeployFaceBackIacService;
import com.hikvision.ga.xalarm.acs.modules.deploy.service.DeployFaceService;
import com.hikvision.ga.xalarm.acs.modules.deploy.service.DeployFaceSuperBrainService;
import com.hikvision.ga.xalarm.acs.modules.deploy.service.DeployService;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84906.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!