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

网站 留言板 制作网站二级域名怎么解析

网站 留言板 制作,网站二级域名怎么解析,电商网站开发技术与维护,响应式网站开发方法Java进程CPU高负载排查步骤_java进程cpu使用率高排查_YouluBank的博客-CSDN博客 【问题定位】使用arthas定位CPU高的问题_arthas cpu高_秋装什么的博客-CSDN博客 CPU飙升可能原因 CPU 上下文切换过多。 对于 CPU 来说#xff0c;同一时刻下每个 CPU 核心只能运行-个线程同一时刻下每个 CPU 核心只能运行-个线程如果有多个线程要执行CPU 只能通过上下文切换的方式来执行不同的线程。上下文切换需要做两个事情保存运行线程的执行状态让处于等待中的线程执行这两个过程需要 CPU 执行内核相关指令实现状态保存如果较多的上下文切换会占据大量 CPU 资源从而使得 cpu 无法去执行用户进程中的指令导致响应速度下降。 在 Java 中文件1O、网络 1O、锁等待、线程阻塞等操作都会造成线程阻塞从而触发上下文切换CPU 资源过度消耗也就是在程序中创建了大量的线程或者有线程一直占用CPU 资源无法被释放比如死循环!CPU 利用率过高之后导致应用中的线程无法获得 CPU 的调度从而影响程序的执行效率! 使用命令查找 采用top命令定位进程 登录服务器执行top命令查看CPU占用情况找到进程的pid 很容易发现PID为29706的java进程的CPU飙升到700%多且一直降不下来很显然出现了问题。 使用top -Hp命令定位线程 使用 top -Hp 命令为Java进程的id号查看该Java进程内所有线程的资源占用情况 top -Hp 29706很容易发现多个线程的CPU占用达到了90%多。我们挑选线程号为30309的线程继续分析。 使用jstack命令定位代码 线程号转换为16进制 printf “%x\n” 命令tid指线程的id号将以上10进制的线程号转换为16进制 printf %x\n 30309转换后的结果分别为7665由于导出的线程快照中线程的nid是16进制的而16进制以0x开头所以对应的16进制的线程号nid为0x7665 采用jstack命令导出线程快照 通过使用dk自带命令jstack获取该java进程的线程快照并输入到文件中 jstack -l ./jstack_result.txt 命令为Java进程的id号来获取线程快照结果并输入到指定文件。 jstack -l 29706 ./jstack_result.txt根据线程号定位具体代码 在jstack_result.txt 文件中根据线程好nid搜索对应的线程描述 cat jstack_result.txt |grep -A 100 7665根据搜索结果判断应该是ImageConverter.run()方法中的代码出现问题 也可以直接采用jstack |grep -A 200 来定位具体代码 jstack 29706 |grep -A 200 7665System Clock #28 daemon prio5 os_prio0 tid0x00007efc19e8e800 nid0xae24 waiting on condition [0x00007efbe0d91000]java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at java.lang.Thread.sleep(Thread.java:340)at java.util.concurrentC.TimeUnit.sleep(TimeUnit.java:386)at com.*.order.Controller.OrderController.detail(OrderController.java:37) //业务代码阻塞点使用工具查找 使用arthas 下载arthas curl -O https://arthas.aliyun.com/arthas-boot.jar1 启动arthas java -jar arthas-boot.jar选择3进行监听我们的应用程序。 模拟CPU高的场景 GetMapping(/cpu)public void cpu() {ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(2, 5, 1000, TimeUnit.SECONDS, new ArrayBlockingQueueRunnable(100));threadPoolExecutor.execute(new Runnable() {public void run() {while (true) {log.info(System.currentTimeMillis() );}}});} dashboard thread -n {number} 按照CPU使用率排序并展示前n个线程 thread [pid] 展示指定线程的线程栈 模拟查看方法调用耗时 RestController Slf4j public class TestController {RequestMapping(/trace)public String trace(int number) throws InterruptedException {number;fun1(number);return Hello World!;}private void fun1(int number) throws InterruptedException {TimeUnit.MILLISECONDS.sleep(10);number;fun2(number);}private void fun2(int number) throws InterruptedException {TimeUnit.MILLISECONDS.sleep(300);number;fun3(number);}private void fun3(int number) throws InterruptedException {TimeUnit.MILLISECONDS.sleep(20);} } trace trace com.charles.web.TestController trace监听TestController的trace方法。 访问wget http://localhost:7077/trace?number1可以看出trace和fun1方法的耗时。 trace命令只会匹配当前的方法以及下一级方法。 trace -E com.charles.web.TestController trace|fun1|fun2|fun3 可以看出fun2方法耗时比较长。 watch watch com.charles.web.TestController fun2 “{params,returnObj}” -x 2 -bwatch方法可以观察到入参此时入参是3。 其它情况 从gc角度出发是否存在大量gc首先确定当前内存消耗情况使用top命令或者查看设备监控管理系统确定内存利用率达97% 总结 CPU飙升问题定位的一般步骤是 1.首先通过top指令查看当前占用CPU较高的进程PID 2.查看当前进程消耗资源的线程PID top -Hp PID 3.通过print命令将线程PID转为16进制根据该16进制值去打印的堆栈日志内查询查看该线程所驻留的方法位置。 4.通过jstack命令查看栈信息定位到线程对应的具体代码。 5.分析代码解决问题。
http://www.w-s-a.com/news/801876/

相关文章:

  • 企业网站建设研究目的意义怎样设计一个公司网站
  • 怎么架构网站便民信息发布平台
  • 网站 建设 现状网站推广合同需要缴纳印花税吗
  • 熊猫头表情包制作网站wordpress 缺省目录
  • 网站浏览图片怎么做的群晖wordpress升级5.0
  • 25个优秀个人网站设计模板网站建设定位分析论文
  • 在线网站备案站长seo综合查询工具
  • 网站根 html网站建设行业数据
  • 网站公司做的网站有最字设计说明室内设计
  • 在线网站代码生成我想做个百度网站怎么做
  • 网站的建设费用分为长治市建设厅官方网站
  • 做网站都有哪些费用建设免费手机网站
  • 网站 组成代码做网站图片怎么插
  • 2020中国企业500强榜单南宁seo标准
  • 北美购物网站排名烟台专业的网站建站公司
  • 门户网站设计特点营销策划咨询机构
  • 天津做网站就到徽信xiala5中国营销型网站
  • 外汇网站建设制作深圳三站合一网站建设
  • 深圳坂田网站设计公司有哪些学校网站建设管理办法
  • 太原建设银行网站中山营销型网站设计
  • 广东省建设厅官方网站多少钱江苏省江建集团有限公司建设网站
  • 网站开发主流服装网站开发课程设计
  • 在iis里面创建网站wordpress响应式视频
  • 学设计哪个网站好网页设计音乐网站
  • 可以自己做斗图的网站上海模板建站多少钱
  • 山东川畅信息技术有限公司网站建设网站开发任务书
  • 网站排版设计欣赏搭建公司介绍网站
  • 网站弹窗是怎么做的长沙智优营家
  • 手机网站菜单设计模板菜单网站图片素材
  • 浙江网站推广爱企查企业查询入口