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

和田做网站的联系电话菏泽官方网站

和田做网站的联系电话,菏泽官方网站,网站是用什么软件做的吗,在百度上打广告找谁推广产品小北说在前面 CPU占用率突然飙升是技术人员常遇到的一个棘手问题#xff0c;它是一个与具体技术无关的普遍挑战。 这个问题可以很简单#xff0c;也可以相当复杂。 有时候#xff0c;只是一个死循环在作祟。 有时候#xff0c;是死锁导致的。 有时候#xff0c;代码中有…小北说在前面 CPU占用率突然飙升是技术人员常遇到的一个棘手问题它是一个与具体技术无关的普遍挑战。 这个问题可以很简单也可以相当复杂。 有时候只是一个死循环在作祟。 有时候是死锁导致的。 有时候代码中有不必要的同步块。 有时候是大量计算密集型任务在运行。 有时候是线程数过多引起的。 有时候是频繁的上下文切换。 有时候是内存不足的问题。 有时候是频繁的垃圾回收。 有时候是内存泄漏导致的。 等等。 导致CPU占用率飙升的问题多种多样不同系统中的不同场景其原因可能各不相同。 在这里小北将对这些问题进行系统化、体系化的梳理帮助大家在实际工作和面试过程中能够清晰、有条理地分析和解决CPU占用率过高的问题 插播一条真的免费如果你近期准备面试跳槽建议在cxykk.com在线刷题涵盖 1万 道 Java 面试题几乎覆盖了所有主流技术面试题、简历模板、算法刷题。 一、cpu占用很高的3大类型9大场景 1.1业务类问题 1.1.1 死循环 死循环是指程序在特定条件下进入了一个无限循环无法跳出导致CPU资源被完全占用。 例如我们有一段代码用来检查文件的更新状态但由于逻辑错误条件永远无法满足结果程序进入了死循环。 while (true) {if (file.isUpdated()) {break;} }1.1.2 死锁 死锁是指两个或多个线程互相等待对方释放资源导致所有线程都无法继续执行CPU资源被消耗殆尽。 发生死锁后就会存在忙等待或自旋锁等编程问题从而导致 繁忙等待问题从而导致 CPU 100% 1.1.3 不必要的代码块 一些冗余、不必要的代码块在运行时占用了大量的CPU资源。 例如不需要的地方使用synchronized块。 public synchronized void unnecessarySync() {// 执行一些不需要同步的操作 }在不需要的地方使用synchronized块会导致线程竞争和上下文切换 1.2、并发类问题 1.2.1 大量计算密集型的任务 大量计算密集型任务在同一时间运行会导致CPU资源被完全占用。 例如在数据分析或科学计算中多个计算密集型任务同时运行 1.2.2 大量并发线程 统中存在大量并发线程线程切换频繁导致CPU资源被大量消耗在上下文切换上 例如Web服务器同时处理大量请求每个请求都创建一个新线程 解决方案使用线程池来限制并发线程数量 1.2.3 大量的上下文切换 当系统中存在大量线程时CPU在不同线程间频繁切换导致性能下降 例如一个程序中开启了数百个线程每个线程都在不断进行I/O操作 for (int i 0; i 1000; i) {new Thread(new IOHandler()).start(); }线程是很宝贵的资源开启线程一定要合理的控制线程数量 3、内存类问题 1.3.1 内存不足 当系统内存不足时就会将磁盘存储作为虚拟内存使用而虚拟内存的运行速度要慢得多。 例如直接一次性加载一个非常大的文件到内存中导致内存不足 byte[] largeData Files.readAllBytes(Paths.get(largeFile.txt));这种过度的分页和交换会导致 CPU 占用率居高不下因为处理器需要花费更多时间来管理内存访问而不是高效地执行进程。 解决方案优化内存使用采用流式处理避免一次性加载大文件 try (BufferedReader reader Files.newBufferedReader(Paths.get(largeFile.txt))) {String line;while ((line reader.readLine()) ! null) {// 处理每一行数据} }1.3.2 频繁GC 频繁的垃圾回收GC操作会占用大量CPU资源导致性能下降。 例如程序中频繁创建和销毁对象导致GC频繁触发 for (int i 0; i 1000000; i) {String temp new String(temp i); }解决方案优化对象创建和销毁减少临时对象的生成。 1.3.4 内存泄漏 内存泄漏导致可用内存逐渐减少最终触发频繁的GC操作占用大量CPU资源 例如某个数据结构中不断添加对象却从未删除导致内存泄漏 ListObject list new ArrayList(); while (true) {list.add(new Object()); }解决方案定期清理不再使用的对象使用合适的数据结构 插播一条真的免费如果你近期准备面试跳槽建议在cxykk.com在线刷题涵盖 1万 道 Java 面试题几乎覆盖了所有主流技术面试题、简历模板、算法刷题。 这么多会导致CPU飙升100%的原因那么该如何解决呢 有没有一个标准的套路可以帮助我快速定位呢 答案是当然有 二、CPU 飙升100%的解决思路和方法论 2.1 使用jstack 解决CPU 100%问题 使用jstack 解决 CPU 100%问题在方法论上要用到的两个核心命令 top 命令查看TOP N线程jstack命令查看堆栈信息 2.1.1 确定Java进程ID 首先需要找到CPU占用高的Java进程的PID进程ID。可以使用 top 或 ps 命令来找到该进程。 top -H -p PID2.1.2 找到占用CPU高的线程ID 在 top 的输出中按 P 键可以按CPU使用率排序找到使用CPU最多的线程。 记下这些线程的IDnid这些ID是十进制的。 2.1.3 将线程ID转换为十六进制 jstack 输出的线程ID是十六进制的因此需要将找到的高CPU使用率的线程ID转换为十六进制。可以使用 printf 命令 printf %x\n thread_id2.1.3 使用 jstack 生成线程快照 使用 jstack 命令生成Java进程的线程快照 jstack -l PID thread_dump.txt2.1.4 分析线程快照 在生成的 thread_dump.txt 文件中查找转换后的十六进制线程ID。可以使用 grep 命令 grep 0xhex_thread_id thread_dump.txt -A 20这将显示包含该线程ID的线程栈信息。分析这些线程栈找到可能导致CPU高占用的代码 2.2 使用阿里开源Arthas性能监控工具 Arthas 是一款强大的 Java 诊断工具能够帮助开发人员快速定位和解决 CPU 100% 的问题 使用arthas解决CPU 100%问题在方法论上要用到两个核心命令 dashboard 命令查看TOP N线程thread 命令查看堆栈信息 2.2.1. 安装和启动 Arthas 安装 Arthas 通过 curl 命令下载并安装 Arthas curl -O https://arthas.aliyun.com/arthas-boot.jar注意在生产环境中我们一般是选择其中一台机器开启Arthas监控因为使用 Arthas 对系统性能会有一定影响 2.2.2 启动 Arthas 启动目标 Java 应用程序然后在终端中运行 java -jar arthas-boot.jarArthas 会显示当前运行的 Java 进程列表选择要诊断的 Java 进程例如输入1显示如下 2.2.3 使用 dashboard 命令查看系统概况 连接到目标进程后使用 dashboard 命令查看系统的整体性能概况包括 CPU 使用情况 dashboard2.2.4 使用 thread 命令定位高 CPU 线程 查看线程列表 使用 thread 命令查看所有线程的信息并找出 CPU 使用率高的线程 thread -n 3这个命令会显示 CPU 使用率最高的 3 个线程输出中会包含每个线程的 ID 和名称 2.2.5 查看具体线程的堆栈信息 假设你发现线程 ID 为 8 的线程 CPU 使用率很高可以进一步查看该线程的堆栈信息 thread 8该命令会显示线程 8 的详细堆栈信息帮助你定位到具体的代码位置 插播一条真的免费如果你近期准备面试跳槽建议在cxykk.com在线刷题涵盖 1万 道 Java 面试题几乎覆盖了所有主流技术面试题、简历模板、算法刷题。 三、总结 工具的选择建议使用arthas它还有很多的功能在实际中很有用 感兴趣的同学可以自行前往官网学习了解https://arthas.aliyun.com/doc/ 需要注意的是大家在面试的时候如果遇到cpu被打满该如何排查这样的问题千万不要上来就回答使用arthas来定位问题。 在生产环境中出现问题时我们第一时间要做的是解决问题所以回答要符合实际场景不然面试官一听就知道你是背的八股文。 那么该如何回答呢 生产中如果出现 CPU 飙升100% 的情况 先确定前一天或者最近是否有新版本发布或者依赖域的服务有新版本发布有的话第一时间回滚。如果最近或很长一段时间都没有新版本发布那就先申请紧急扩容增加机器 最后才是通过文本的这一套套路排查具体的原因分析和解决方案 最后说一句(求关注求赞别白嫖我) 最近无意间获得一份阿里大佬写的刷题笔记一下子打通了我的任督二脉进大厂原来没那么难。 这是大佬写的 7701页的BAT大佬写的刷题笔记让我offer拿到手软 本文已收录于我的技术网站 cxykk.com程序员编程资料站有大厂完整面经工作技术架构师成长之路等经验分享 求一键三连点赞、分享、收藏 点赞对我真的非常重要在线求赞加个关注我会非常感激 真的免费如果你近期准备面试跳槽建议在cxykk.com在线刷题涵盖 1万 道 Java 面试题几乎覆盖了所有主流技术面试题、简历模板、算法刷题
http://www.dnsts.com.cn/news/280424.html

相关文章:

  • 检测网站的seo效果关键词挖掘查询工具
  • 网站改版介绍wordpress 上传到主机
  • Spring做网站和什么照明做外贸的有那些网站
  • 网站建设项目的工期计划如何与网站管理员联系
  • 织梦电影网站模板关键词优化教程
  • 如何查询网站打开速度怎样做免费的网站推广
  • 怎么建设商品网站企业注册信息
  • 企业网站推广的形式有哪些wordpress php扩展
  • 律师个人网站模板互联网线上推广
  • 贵阳网站建设需要多少钱中国摄影在线网站
  • 合肥最好的网站建设公司排名上海网页设计公司费用
  • 国外金融网站设计欣赏果洛营销网站建设哪家好
  • 个人网站的首页做美食教程的网站有哪些
  • 网站开发需要编程吗手机版网站html5源码
  • 网站 建设开发合同360免费建站官方
  • 西安网站建设哪家营销渠道有哪些
  • 网站不稳定河北地图
  • 网站导航用什么字体程序员做网站外快
  • 开发一个大型网站多少钱南昌网站建设q479185700棒
  • 网络运维是做什么的成都网站外包优化
  • 优府网站建设广州微信开发
  • 竞争对手网站分析集团公司网站建设策划
  • 网站开发合同的缺陷苏州城乡建设局的网站
  • 大学生网站建设策划书范文大力推广建设电子商务网站技术
  • 怎么做一个网站页面站长查询seo是什么意思
  • 高端的网站庆网站建设
  • 最好的php网站开发工具合肥响应式网站建设
  • 霸气业务网站源码邢台企业网站建设公司
  • 专业的建设网站服务seo权重优化
  • 在建设银行网站能换美元吗当地做网站贵