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

手机app网站制作域名注册商怎么查

手机app网站制作,域名注册商怎么查,深圳坪山天气预报15天,梧州网站推广方案文章目录 前言一、内存使用过高导致CPU满载案例代码分析思路 二、出现了类似死循环导致cpu负载案例代码分析思路 三、死锁案例代码分析思路 前言 首先线上接口变慢,原因可能有很多,有可能是网络,有可能是慢 SQL,有可能是服务本身…

文章目录

  • 前言
  • 一、内存使用过高导致CPU满载
    • 案例代码
    • 分析思路
  • 二、出现了类似死循环导致cpu负载
    • 案例代码
    • 分析思路
  • 三、死锁
    • 案例代码
    • 分析思路

前言

首先线上接口变慢,原因可能有很多,有可能是网络,有可能是慢 SQL,有可能是服务本身出现了问题,还有可能是机器达到了性能瓶颈。而机器性能瓶颈也又可以分为磁盘 IO 瓶颈、CPU 性能瓶颈、网卡瓶颈等等。

线上接口过慢,排除网络的原因之外无非有以下三点:

  1. 内存使用过高,频繁gc导致cpu占满
  2. 内存使用不高,出现了类似死循环场景
  3. 死锁
    一般在遇到问题的时候先使用top -c 命令查看cpu是否占满,然后再使用free -m查看内存使用率,初步
    判断是上面问题的哪一种,然后再针对这一种问题深入排查。下面来模拟一下以上几种情况:

一、内存使用过高导致CPU满载

案例代码

public class FullGc {public static void main(String[] args) {List<Object> list = new ArrayList<>();for (int i = 0; i < 10000000; i++) {String str = "";for (int j = 0; j < 1000; j++) {str += UUID.randomUUID().toString();}list.add(str);System.out.println(str);}}}

分析思路

  1. 查看负载高的cpu进程id: top -c
    在这里插入图片描述

    这时发现进程id为70719的cpu负载较高

  2. 查看该进程id的线程id: top -Hp 70719
    在这里插入图片描述

    这时发现线程id为70720的线程负载较高

  3. 将十进制的线程id转换为16进制小写的:printf “%x\n” 69476
    在这里插入图片描述

    发现16进制的线程id为11440

  4. 查看该线程的运行的情况:jstack 70719|grep 11440 -A60
    在这里插入图片描述

    发现是FullGc这个类的第14行有问题

  5. 通过jamp工具导出内存日志,分析堆的情况:jmap -dump:format=b,file=dump.dat 70719
    在这里插入图片描述

  6. 使用MAT工具分析堆的情况
    在这里插入图片描述

发现了以上大量的字符串

二、出现了类似死循环导致cpu负载

案例代码

public class Cpu {public static void main(String[] args) {while (true) {}}
}

分析思路

基本上跟内存使用率过高的前几步差不多的,依然是以下几步:

  1. top命令查看当前CPU消耗过高的进程,得到进程id
  2. 根据进程id得到占比较高的线程id
  3. 将线程id转换为十六进制
  4. 根据进程编号用jstack命令查看线程id,可以得到线程的具体堆栈信息
    在这里插入图片描述

从图中可以看出Cpu这个类的第三行有问题

三、死锁

案例代码

public class DeadLock {private static Object left = new Object();private static Object right = new Object();private static class Thread1 implements Runnable {@Overridepublic void run() {synchronized (left) {try {Thread.sleep(2000);} catch (InterruptedException e) {}synchronized (right) {}}}}private static class Thread2 implements Runnable {@Overridepublic void run() {synchronized (right) {try {Thread.sleep(2000);} catch (InterruptedException e) {}synchronized (left) {}}}}public static void main(String[] args) {new Thread(new Thread1()).start();new Thread(new Thread2()).start();}
}

分析思路

这个就简单了

  1. 先使用jps查看进程id,如图:
    在这里插入图片描述
  2. 找出死锁的线程:jstack [进程id]
    在这里插入图片描述
    jvm会自动搜索出死锁的堆栈信息
http://www.dinnco.com/news/52697.html

相关文章:

  • 网站建设如何盈利住房和城乡建设部官网
  • 网站建设的现状与趋势论文公司网站模板设计
  • 网站响应式是什么意思百度广告联盟网站
  • 国外有哪些做服装的网站有哪些方面seo公司赚钱吗
  • 传统网站建设如何让百度搜索排名靠前
  • 哈尔滨住房和城乡建设局网站首页谷歌排名推广
  • 美女教师做爰网站国外seo
  • 建设工程教育网怎么样重庆seo优化
  • 建设网站的软件下载体育新闻最新消息
  • 信息网络工程师怎么做网络推广优化
  • 网站独立ip多代表什么凡科建站教程
  • 建设用地规划公示在哪个网站查揭阳市seo上词外包
  • 做百度推广一定要有网站吗全媒体运营师培训
  • 如何做电影网站不违法免费推广网站2024
  • 中小企业营销型网站建设深圳市seo上词多少钱
  • 制作微信商城网站开发超级优化空间
  • 郑州那家做网站便宜广州网站营销seo
  • 巩义专业网站建设价格网络推广的常用方法
  • 单页网站下载浏阳廖主任打人案
  • 谷歌seo优化排名相城seo网站优化软件
  • 太湖县网站建设公司种子搜索引擎在线
  • 网站关键字在哪里设置百度新站关键词排名
  • 大理州住房和城乡建设局网站网站seo诊断报告怎么写
  • 网站页面设计说明黑马培训机构可靠吗
  • 唐山网站建设冀icp备济南网站优化培训
  • 电脑可以做网站主机么小说搜索风云榜
  • 网站开发笔记本要什么配置网站优化方案模板
  • b2b平台好做吗北京网站优化经理
  • 做劳保批发的网站google建站推广
  • 网站全站优化推广网站多少钱