java 代码性能出现问题如何快速定位到时哪个函数导致?

最近客户的服务器上部署上我们的产品之后,在客户使用一段时间后,因为产品的问题而导致CPU占用率95%以上,严重一点导致服务器重启。
客户体验非常差。代码是用JAVA开发的。我们想急于优化代码,但是代码量很大,不可能把所有的代码都筛查一遍!
请问各位大神,有什么好的方法或者好的工具没有,能够在应用服务器上能够快速定位是哪个函数或者什么操作导致CPU异常。

0

4个回答

用TProfiler可以log函数调用的时间开销。
https://blog.csdn.net/q915730058/article/details/79136805
另外需要指出的是,有些开销,比如jvm的gc开销,还有io开销、网络开销等等,需要另外的分析。

0

jdk提供了一套专门定位性能的工具箱(在jdk的bin目录下) 我的步骤一般是使用jmc工具定位到那个线程占用的内存或CPU比较高,然后根据线程ID使用jstack工具能定位改线程执行的方法,这样子你大概就知道哪里出问题了

具体的使用方法请参照 https://blog.csdn.net/u010943801/article/details/79885843

如果我的回答对您有帮助,请点击采纳,如果没有,请留言

0

方法好多:
1. aop打印关键点执行日志、调用时间等。
2. 数据库连接池改用druid,打开相关监控
典型的监控如下: 图片说明

0

您好,一般来说都是日志来判断的,您可以把您注释的日志取消注释,或者使用debug监控cpu内存的方式来试试
如果解决了您的问题,请点击采纳,如果并没有,请在下方回复,我会继续帮您解答。

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
怎样快速定位到函数代码
如图,我怎样可以快速定位到GetCurrentDirectory()那里?rn[img=https://img-bbs.csdn.net/upload/201411/23/1416709063_419994.jpg][/img]
如何定位导致程序崩溃的代码?
很多时候在测试人员机器或者在客户机器出现程序崩溃的错误,如下图:rn[img=https://img-bbs.csdn.net/upload/201712/04/1512366549_724004.png][/img]rnrn 在开发机器上并不能重现这样的崩溃。总不能在测试人员机器或者在客户机器安装VisualStudio进行调试(一是VS太庞大,安装时间长;二是客户单位可能就不允许联网导致无法安装),像上面的错误只能定位到错误出现在ImageMath.dll这个模块。请问通过什么办法能定位到导致程序崩溃的代码?
如何快速定位代码错误
1.查看报错的堆栈信息 2.使用debug 3.在try-catch语句中设置错误提示 4.梳理代码逻辑   面试的时候被问到如果发生运行时错误你会如何解决?我应聘的是后端,关于后端报错,当时想到的两个方法, 一个是eclipse当中可以debug: https://jingyan.baidu.com/article/647f0115d666b27f2148a8b1.html ↑这...
快速定位异常代码
程序在设备上运行时发生闪退,调试的时候发现未捕捉的异常,但是这些异常信息很有限,不能有效定位代码段,需要为app加入未捕捉异常: 摘自:http://www.cnblogs.com/dqshll/archive/2012/08/29/2661933.html 在AppDelegate.m中添加函数: void uncaughtExceptionHandler(NSException*ex...
Java 定位导致CPU飙升的代码过程
线上的一个日志实时输出的程序曾经出过这样一个问题,刚开始上线java程序占用的CPU的资源很少,但是到了整点的时候,CPU直线飙高,直接到达100%根本没有要下降的趋势,唯一的方法只能杀掉它了,后面在借助jstack与top排查到线程然后定位到某行代码出的问题。 排查演示 使用jps找到程序的pid [root@logs bin]# ./jps -l -m | grep logdir2 2...
如何定位导致Crash的代码位置
1. 在开发环境下定位Crash错误   1.1 普通的crash   1.2 较难定位的crash   1.3 注意vc的输出日志 2. 定位发布在外的版本的Crash错误 3. 小技巧   3.1 根据程序地址找到代码位置   3.2 根据消息值查看对应的windows消息   3.3 查看GetLastError返回值   3.4 在代码中暂停程序 4. 编程小警示  ...
如何快速定位一个函数的返回点
如何快速定位一个函数的返回点,这对于一个比较短小精悍的函数来讲,从来就不是问题,但是假设我们有一个名为LongFunction的1000行长的函数, 调用如下: bool bSuccess = LongFunction(); assert(bSuccess); 在运行中第二行弹出一个assert,我们知道肯定是LongFunction内部运行中出了什么问题导致其返回false。那么它内...
pycharm 快速 跳转 :书签 函数 快速 定位 阅读代码
书签 功能 快捷键 Ctrl + F11 设置书签 Ctrl + 1 书签号 跳转到 该书签 Shift + F11 CTRL F11 | F11: 设置书签. SHIFT F11: 显示所有书签。 快速跳转 CTRL F12: 当一个文件中方法太多,要快速跳到某个方法时,可以用此快捷键打开LIST, 除了用上下箭选择外,还可以输入字母。 移动 ALT UP: 移到上一个方法 ALT DOWN: ...
java工具类快速定位
其实 java作为一个完善的类库,本身就提供了很多权威工具类,因此我们平时写代码时候,如果能够很好的利用现有的工具,将会使开发的速度得到很大的提高,而代码的bug也会更少,毕竟经过实践反复测试完善的代码,不能否认具有更高的权威性。
java问题快速定位
java线上系统问题排查,快速定位问题所在。
java快速定位
按ctrl+shift+R搜索一个jsp,然后打开这个jsp。rn有没有这样的功能,打开的同时,左边的树形列表页能快速跳转到对应的那个目录下的那个文件·rn否则,在左边树形,我要打开或看到这个文件所在位置,我还要一级级展开。
多维数组如何快速定位??
有一个多维数组了rn比如二维rn1 arn2 brn3 crn4 drn这样子的rn第一维不重复rn我现在想要快速的找到第一维是某个数值的那个数rnrn比如我要知道第一维是2的第二维的数是多少rn当然使用全部循环一次,是可以的rn但我觉得会不会浪费资源rn所以想问问是否有快速的定位方法rn谢谢!!!
如何快速定位
一个很长的表格,我希望能用JS让网页快速定位到某一行,也就是让某一行显示,而不需要去拖动滚动条rnrn类似于锚点的效果,但不能用锚点.
如何快速定位网络故障?
昨天晚上把几台在线交易的网站和后台迁移到另外一个数据中心。本以为这属于轻量级的迁移。不会出现什么问题。就让一个兄弟主导,我负责帮忙打下手。没有想到,途中出现好几个问题,看起来很简单,但让他很棘手。感觉不可思议。 从下午5点开始,本以为,满打满算2个小时完全可以搞定。当我们把服务器搬到数据中心,并按照设想的思路配置。结果发现无法从internet访问我们的网站。...
如何快速定位记录?
已经下载到客户端的dbgrid中的记录,我想快速定位到我所要求的记录,比如在edit输入要搜索的值,如何在 dbgrid中快速定位,我现在使用的是locate方法,感觉速度会很慢,有没有更好的办法?前提是不要再到服务器去提取数据,因为已经都在客户端 了。
如何定位某个java类在哪个jar文件
当你的classpath非常长,包含上百个.jar文件时,如果知道某个类在哪个.jar里呢?以前经常碰到这种问题,因为忙,没有管它,今天写了个小shellfindclass.sh:for i in ....../lib/*.jardo    echo "Finding: " $i    jar -tf $i | grep $1done使用方法:例:查找类 ClassA./findclass.sh 
快捷键快速定位函数--出问题
如下:rnprocedure TMainForm.MItem_UploadClick(Sender: TObject);rnbeginrn UploadBackUp();rnend;rn我按住 ctrl+ 点击函数UploadBackUp,试图定位到函数UploadBackUp的声明部分,可是没有响应!我用的是D7企业版,,经常出现这样的问题,有什么有效的解决方案吗?rn
定位导致物化视图无法快速刷新的原因
 物化视图的快速刷新采用了增量的机制,在刷新时,只针对基表上发生变化的数据进行刷新。因此快速刷新是物化视图刷新方式的首选。  但是快速刷新具有较多的约束,而且对于采用ON COMMIT模式进行快速刷新的物化视图更是如此。对于包含聚集和包含连接的物化视图的快速刷新机制并不相同,而且对于多层嵌套的物化视图的快速刷新更是有额外的要求。  如此多的限制一般很难记全,当建立物化视图失败时
android 代码混淆导致问题,快速定位
我们在打包时,debug版本没问题,但混淆后release版本有时会出现异常崩溃, 比如:**a(SourceFile:) NullPointerException ** 针对这种情况,可以通过抓UncaughtExceptionHandler崩溃日志或者第三方比如云测工具查看崩溃的原因。在androidstudio下还有一种更好的方式。
定位导致物化视图无法快速刷新的原因
物化视图的快速刷新采用了增量的机制,在刷新时,只针对基表上发生变化的数据进行刷新。因此快速刷新是物化视图刷新方式的首选。 但是快速刷新具有较多的约束,而且对于采用ON COMMIT模式进行快速刷新的物化视图更是如此。对于包含聚集和包含连接的物化视图的快速刷新机制并不相同,而且对于多层嵌套的物化视图的快速刷新更是有额外的要求。 如此多的限制一般很难记全,当建立物化视图失败时,Oracle...
快速定位隐蔽的sql性能问题及调优
在前几天,有个开发同事问我一个问题,其实也算是技术救援,他说在有个job数据处理的频率比较高,在测试环境中很难定位出在哪有问题,而且速度也还能接受,但是在生产环境中总是会慢一些,希望我能在测试环境中协助他们,看看是不是sql语句出什么问题了还是其它相关的问题。 这种类似实时监控的语句,从第一印象来说,很可能通过awr捕获不到,如果通过ash来捕获,因为测试环境中有几十套测试环境在运行,就算得到某
快速定位到报错代码位置
ctrl+.
xocde快速定位崩溃代码
起因 有不少人在评论发一些崩溃信息,问我程序怎么回事,其实如果你知道了程序崩溃在哪行代码崩溃了,就很容易定位问题了。android开发看崩溃log就能看到具体哪行代码出问题,那在iOS开发怎么快速定位到具体哪行代码崩溃呢。 步骤1 在xcode添加一个通用断点就行了。方法如下: 点击项目导航断点那,如图 步骤2 点击+号: 一步步按上面图完成操作。 ...
快速定位到该按钮的代码
uiautomatorviewer结合Android Studio 快速定位代码案例: 引言:通常我们在不熟悉代码的情况下,我们时常会想怎么样快速熟悉代码,找到代码的控制逻辑,要是能看着界面就能找到代码位置该多爽?下面将介绍很简单的一种快速定位方法。 引用案例:  假设我们要快速定位到该按钮的代码 步骤一:在Android Sdk目录下找到->tools目
Python和Java哪个性能高些
最近在网上看到了几个新技术对Ruby和Python一知半解请问各位网友Python、Ruby和Java哪个运行速度高些?
请问得到时区的API函数是哪个啊?
就像在控制面板中选的时间和日期,然后选中时区页签,下拉列表框有很多时区一样!
性能定位插件性能定位插件
性能定位插件性能定位插件性能定位插件性能定位插件性能定位插件性能定位插件性能定位插件
Android 如何快速定位当前页面是哪个Activity or Fragment
在日常需求开发中,经常碰到不太熟悉的模块,如何快速定位相应页面对应的Activity/Fragment ?   (1)查看当前Activity  :adb shell "dumpsys window w | grep name=" (2)查看当前栈顶的Activity :adb shell dumpsys activity | grep "mFocusedActivity" (3)查看当前...
oracle性能问题如何定位
最近甲方抱怨,oracle 怎么越跑越慢,感觉没有做什么。 1.先整体看看 awr 哎,没有什么大问题。 2.再看看等待事件 ,读写数据量有点大,网络带宽是不是也有点问题? unicomidmp@UNICOM>select * from (select event,total_waits,time_waited from v$system_event where w
position:absolute定位出现问题
rnrnrn rn 无标题文档rn rnrnrn不存在父级元素存在文本 rnrnrnrnrn在IE6下层以最后一文字的右上角为原点显示,而ff中层跑到了文字的下方是怎么回事???
TAstaClientDataSet如何快速定位到某行?
TAstaClientDataSet如何快速定位到某行?
如何快速定位到事件触发的控件
怎么能快速的找到某个事件是哪个控件触发的,如何快速的定位到这个控件
如何快速定位线上问题?
I、登录环境 使用合适的工具快速登录环境是解决线上问题的前提。II、打日志 a、调用外部重要服务的地方最好打个日志,方便追踪到调用系统返回值是否是正确的。 b、在方法中打日志尽量要克制,冗余日志太多影响问题定位;系统访问量增加后容易导致磁盘报警; c、异常情况日志更详细,日志最好包含上下文,这样可以省去不少定位时间。III、问题定位 1、单纯根据某明显的文本特征去查找某段日志 grep
如何利用索引快速定位?
我有一个较大的数据库,由于做分页控件,打算快进能一次跳过10%的纪录rn比如我有100000条数据rn打算快进能每次跳过10000条读取数据rn本来我在第一条上,然后我打算进到第10000条上rn我该怎么去写查询语句呢?
如何快速定位linux源码源文件?
如题,有时候一个函数,很多文件里面都实现了。就连同一个平台(arm,mips...)也有很多不同的文件,实现相同的函数,有些文件可根据芯片的型号快速找到,但有些文件的名称与芯片型号毫无关系,那么又如何快速定位呢?
如何快速定位转换错误。
insert into 表 (字段列表)rnselect 字段列表 from 表rnrn假设表中有几十万条甚至更多记录,rn万一出现 varchar转numeric 转换错误,rn系统只会提示有这种错误,而不会告诉你是rn在哪一条记录上哪个字段出错了,这样子要定位rn起来只能逐条去判断,效率很低,有啥方法可以rn快速定位是哪一条记录哪个字段转换错误?
nodejs 死循环如何快速定位
1.用sudo gcore pid 产生对应进程的core文件。 然后借助第三方工具,比如alinode 分析。 不知道为什么 得到的死循环的时候 进程停留的js函数,并不能很准备的定位出函数。 ...
myeclipse如何快速定位css
rn怎么快速定位到login的css文件里rn就好像按下ctrl的效果一样。
如何快速定位到文档标题
本套Word2016视频教程由浅入深、循序渐进地介绍了Word2016软件安装、基础操作、文档基础排版、图文混排、表格编辑、长文档的编辑和排版、打印、综合案例及办公各个阶段经常遇到的各种锦囊妙计等等。
如何快速提升Firefox的性能
现在每天使用最多的便是Firefox,如何才能有效利用系统资源,提升Firefox,提高效率。 下面介绍了能够有效提升Firefox性能的15个方法。 在工具栏使用小图标可以增大可视空间。 使用智能关键字(Smart keywords)。 参考:如何设置“智能搜索(Smart keywords) 使用快捷
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo