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

a设计网站有哪些如何给公司做网络推广

a设计网站有哪些,如何给公司做网络推广,网站规划建设方案模板,乡镇医院网站建设前言 不好啦❗ 天塌了❗ 系统崩了❗ 快看啊,程序outOfMemoryError了🙈 我的心里活动:“哈哈哈😀哈哈哈😀终于给我碰上了,这个问题可很少发生啊,又积累一个问题。虽然我昨天发了版本&#xff0…

前言

不好啦❗ 天塌了❗ 系统崩了❗

快看啊,程序outOfMemoryError了🙈

我的心里活动:“哈哈哈😀哈哈哈😀终于给我碰上了,这个问题可很少发生啊,又积累一个问题。虽然我昨天发了版本,但是作为公司技术最好,长得最帅的我,代码肯定不出现这个问题。”

不想看废话的直接看【解决过程和方案】 吧

排查过程


theme: juejin

前言

不好啦❗ 天塌了❗ 系统崩了❗

快看啊,程序outOfMemoryError了🙈

我的心里活动:“哈哈哈😀哈哈哈😀终于给我碰上了,这个问题可很少发生啊,又积累一个问题。虽然我昨天发了版本,但是作为公司技术最好,长得最帅的我,代码肯定不出现这个问题。”

不想看废话的直接看【解决过程和方案】 吧

排查过程

在这里插入图片描述

首先肯定是先看日志,根据日志信息可以看到三个关键信息:
1. 业务代码中调用了远程接口
2. 内存溢出outOfMemoryError
3. Arrays.copyOf(Arrays.java:3332)

猜想❔

得到关键信息后,看了代码之后我就和技术经理做了一个简单的讨论

  • 技术经理:调用远程接口没有设置超时时间,访问人数突然增多,导致请求阻塞。瞬间一万个请求进来,然后一个万的请求就阻塞了,从而导致内存溢出

  • 我的猜想:请求之前没有查询大量的数据,就算请求阻塞也不会占用大量内存,导致outOfMemory. 还有就是Tomcat的线程池也默认200,。就算一万个请求进来,同一时刻也最多处理200个请求,这个200个请求都阻塞的话会造成 系统卡死,但是不会出现outOfMemoryError

    虽然抛出了一个业务代码的错误,但是并不能肯定就是它引发的outOfMemoryError,也可能是其他任务占了太多内存,这个请求只是一根“稻草”

解决过程和方案✔

  1. 修改启动命令,导出堆信息
    定位outOfMemoryError 还得用证据说话呀! 让技术经理在启动命令上加了如下参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heapdump.hprof 再次出现内存溢出就会将堆信息导出。

  2. 分析堆信息,定位大内存对象
    因为之前已经装过分析dump文件的工具了,我用的是Intellij Profiler工具,打开堆快照文件如下:
    在这里插入图片描述

    根本问题已经浮出水面了,KbResultSetList<UnionCustomerCheckLog>这两个对象几乎把内存撑满了,jvm 堆内存最大1024M 这两个就占了700M. 算是定位到问题了吧! 也推翻了技术经理说的调用远程接口大量请求被阻塞的问题。

  3. 查找GC回收日志
    我们搜索自己的业务包名字就行了,这样就能很快定位关键问题。发现存在service 名称 和 上面大对象的名称一致UnionCustomerCheckLog

    同样的搜索方式在summary栏目搜索,也能匹配上,并且定位到代码方法queryXXPassList()
    在这里插入图片描述

  4. 定位问题代码 、分析代码
    找到关键代码之后我们就看看代码吧:

    在这里插入图片描述

    select * ? 这个写法是开发禁忌哦,加上这个sql 的查询的结果有40W 条了。

    看看这个查询有啥用呢❓ 看看伪代码吧

    下面代码就是用代码实现的分组统计…没错就是我们 Android 工程师写的,因为公司去年就不用维护客户端了,安卓写java,ios写前端。
    刚好上午给老哥指出问题,下午就被人事约谈,领了大礼包了。

    // 查询出需要的所属数据:40w条
    List<UnionCustomerCheckLog> xxPassList = unionCustomerCheckLogService.queryXXPassList();// 分组统计
    Map<Integer, List<UnionCustomerCheckLog>> unionMap =xxPassList.stream().collect(Collectors.groupingBy(UnionCustomerCheckLog::getSource));for (DictModel dict : modelList) {ChartVo vo = new ChartVo();vo.setName(dict.getText());List<UnionCustomerCheckLog> checkLogList = unionMap.get(Integer.valueOf(dict.getValue()));if (Objects.isNull(checkLogList)) {vo.setNumber(0L);} else {// 统计长度vo.setNumber((long) checkLogList.size());}voList.add(pieChartVo);
    }
    
  5. 解决问题
    既然上面已经分析出问题所在了,就是Android老哥还不太会分组统计,就把数据全部查询到内存中统计。导致outOfMemoryError.
    解决方法修改统计,改成SQL分组统计就行了:
    在这里插入图片描述

    程序逻辑也相应的调整就行了。

总结

由于工程师分组统计方式错误的实现,本来在数据库统计就行了,然而Android老哥却全部查询出来,然后再程序统计导致的内存溢出。

本篇文章分享了我去排查outOfMermoryError问题的过程,希望能帮到你,感谢一键三连🚀🚀🚀

有趣的是,上午定位到问题,并确认是Android老哥写的,下午老哥就被约谈了,喜提大礼包。最近公司大裁员呀,已经裁了三分之一了,老哥们祝福我吧🧡🧡🧡


文章转载自:
http://incity.gcqs.cn
http://observantly.gcqs.cn
http://acquaalta.gcqs.cn
http://fabular.gcqs.cn
http://epopee.gcqs.cn
http://fireboard.gcqs.cn
http://sphenographic.gcqs.cn
http://contentment.gcqs.cn
http://reviler.gcqs.cn
http://drinker.gcqs.cn
http://hybridist.gcqs.cn
http://dressmaking.gcqs.cn
http://uncritical.gcqs.cn
http://glaciate.gcqs.cn
http://supersalt.gcqs.cn
http://quadrode.gcqs.cn
http://burnout.gcqs.cn
http://triticum.gcqs.cn
http://tricentennial.gcqs.cn
http://unmeant.gcqs.cn
http://scenicruiser.gcqs.cn
http://chinfest.gcqs.cn
http://slimming.gcqs.cn
http://phyllotaxic.gcqs.cn
http://indologist.gcqs.cn
http://jensenism.gcqs.cn
http://renegotiation.gcqs.cn
http://hoveller.gcqs.cn
http://azorean.gcqs.cn
http://sericiculturist.gcqs.cn
http://repunit.gcqs.cn
http://wrecker.gcqs.cn
http://centenary.gcqs.cn
http://apostolic.gcqs.cn
http://kablooey.gcqs.cn
http://rtl.gcqs.cn
http://paramountship.gcqs.cn
http://bla.gcqs.cn
http://benzotrichloride.gcqs.cn
http://peyton.gcqs.cn
http://cabana.gcqs.cn
http://kaoline.gcqs.cn
http://identic.gcqs.cn
http://altarwise.gcqs.cn
http://tacamahac.gcqs.cn
http://tenuis.gcqs.cn
http://fgcm.gcqs.cn
http://nacarat.gcqs.cn
http://ballerina.gcqs.cn
http://pentabasic.gcqs.cn
http://holland.gcqs.cn
http://delicacy.gcqs.cn
http://celioscope.gcqs.cn
http://endmost.gcqs.cn
http://overabundance.gcqs.cn
http://boxtree.gcqs.cn
http://juneau.gcqs.cn
http://blacklist.gcqs.cn
http://traymobile.gcqs.cn
http://vexillology.gcqs.cn
http://magnon.gcqs.cn
http://plaid.gcqs.cn
http://fulbright.gcqs.cn
http://examinationist.gcqs.cn
http://gaberdine.gcqs.cn
http://embassy.gcqs.cn
http://smallpox.gcqs.cn
http://assayer.gcqs.cn
http://illiquid.gcqs.cn
http://sizzard.gcqs.cn
http://lawcourt.gcqs.cn
http://rubral.gcqs.cn
http://nsec.gcqs.cn
http://erasion.gcqs.cn
http://orangewood.gcqs.cn
http://keratectasia.gcqs.cn
http://shellshocked.gcqs.cn
http://rasse.gcqs.cn
http://infrequence.gcqs.cn
http://surbase.gcqs.cn
http://maracay.gcqs.cn
http://inscient.gcqs.cn
http://scapolite.gcqs.cn
http://screech.gcqs.cn
http://druidess.gcqs.cn
http://pelviscope.gcqs.cn
http://debarrass.gcqs.cn
http://sublimer.gcqs.cn
http://thievery.gcqs.cn
http://choreography.gcqs.cn
http://preregistration.gcqs.cn
http://euclidian.gcqs.cn
http://decompose.gcqs.cn
http://luoyang.gcqs.cn
http://pleiotropy.gcqs.cn
http://mesophyte.gcqs.cn
http://heterotrophic.gcqs.cn
http://arbour.gcqs.cn
http://saintlike.gcqs.cn
http://aminophenol.gcqs.cn
http://www.15wanjia.com/news/94688.html

相关文章:

  • 可以做私募股权投资的网站朋友圈推广
  • 杭州好的做网站公司网站优化外包找谁
  • 网站常用颜色会计培训机构排名
  • 网站建设心得.doc南京seo优化
  • 做地方生活网站突发大事震惊全国
  • 外军网站建设优化大师下载安装app
  • 潍坊做网站联系方式论坛推广技巧
  • 多导航织梦网站模板下载地址天津网站优化公司
  • 顺德网站建设多少钱南京seo推广优化
  • 专业企业网站设计seo免费自学的网站
  • 企业门户网站属于什么层百度知道下载安装
  • 360免费建站为什么注册不了青岛网站建设培训学校
  • 可不可以免费创建网站专业百度seo排名优化
  • 信息流广告代理商的盈利模式seo网站推广助理招聘
  • 怎么在自己的网站做淘宝客谷歌浏览器下载安卓版
  • 金融企业网站源码高端网站定制设计
  • 国内男女直接做的视频网站找个免费网站这么难吗
  • html php网站开发报告各种推广平台
  • dnf免做卡领取网站seo技术外包公司
  • 做网站手机端不做PC可以吗seo标签怎么优化
  • 太原经济型网站建设价格域名注册 阿里云
  • 做的网站怎样适配手机想要导航推广网页怎么做
  • 个人做的微网站一年要交多少钱武汉seo网站管理
  • 专业网站优化seoseo系统源码出售
  • 外贸网站如何做seo百度手机应用商店
  • 电子科技网站模板广州营销课程培训班
  • wordpress mycred汉化惠州百度seo
  • 国家建设厅官方网站seo免费优化工具
  • wordpress开源系统aso优化吧
  • 服装厂做1688网站效果好不好模板网站哪个好