范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

那天服务器内存被Java线程撑爆了,简单的JVM问题诊断流程

  话说那天中午吃饭的时候,一个同事说:"那个项目组的人快气死我了,程序有问题,早晨在群里@了他们,到中午才回消息,然后竟然还说他们的程序没有问题,是我们这边调用的太频繁了。简直想笑。"
  一般来说,对接出现问题,如果不是错误太明显,我首先都会先怀疑是不是自己出了问题,以免到时候丢人。所以我说,吃完饭回去我帮你排查一下,看问题到底出在哪里。背景说明
  我们当前这个系统和很多的第三方系统做了集成,出问题的就是其中一个三方系统。其实很简单,他们的系统会产生一些个人待办任务,然后待办任务的个数需要推送到我们的 APP 上,作为图标的角标显示。
  用户数据已经打通,其实很简单的需求,角标通知也不要求实时,10分钟刷一次就可以。这个场景非常典型,用消息队列再合适不过了。他们把数据推到消息队列,我们去消息队列取,完美。
  可现实并不是这样,他们说系统是产品化,不支持消息队列,只能把待办任务接口开放出来。好的(微笑脸),你们是产品你们有理。可能有待办任务的用户不多,300多个,那就每隔 10 分钟请求 300 多次请求呗。也没用多线程,就是简单的循环 300 多次请求,每次耗时差不多的1分钟。
  也可以,那就这样呗。
  顺便说一下,这个服务的 JDK 是 1.6 版本,据说由于历史原因,现在已经不敢升级了。而且,服务要部署在 windows 上。(你说神奇不神奇)花明柳暗
  那就这样呗,做个定时任务,10分钟咔咔请求个 300 来次,也挺过瘾,也挺省心。
  但是好景不长,天不遂人愿,服务器不遂程序员愿。
  以下是同事的经历,我转述以下。
  就在定时任务跑起来后的第二个晚上,那本来该是一个平常的晚上,可是告警邮件扰人清梦。一看日志,内存使用空间过高,撑爆了,导致机器自动重启了。windows 就这点好啊,还会自动重启(尴尬脸)。然后手动上去把服务启动起来,解决。
  隔了一天,还是晚上,又报警了,服务器又自动重启了,又是内存使用空间过高。又手动上去把服务启动了。
  于是他反馈给这个服务的开发人员,结果得到的回复是:"我们的服务没有问题,肯定是你们的调用有问题,你们把定时任务停掉肯定就好了,所以是你们的问题"。
  于是,他过来找我,跟我说明情况,问我可能会是什么问题。
  我:你确定定时服务是 10 分钟一次,没有出现死循环吗?
  同事:确定。
  我:那他们的服务有使用 redis 之类的外部缓存吗?
  同事:不知道。
  我:… 既然你确定你调用的没问题,那肯定是他们程序出现问题把内存撑爆了呀,这有什么好怀疑的,让他们改吧。
  同事:他们现在说自己没问题啊。挖出真凶
  好吧,既然他们说没问题,那我就来帮他把问题找出来吧。于是,远程进了那台 windows 服务器。
  这时候已经把定时任务已经跑了两天了,16G 的内存已经用掉 15G 多了,眼看随时有可能崩溃,然后把定时任务停掉,内存使用量也并不会下来。
  我开始怀疑是不是用了 redis 之类的外部缓存,结果进服务器一查 redis 、memcached 之类的压根儿就没装,所以排除外部缓存。(随后使用 JVM 工具查看也证明了这一点)
  那既然不是外部缓存,那肯定出在 JVM 上了,要不然就是用了 JVM 缓存,要不然就是内存泄漏什么的。于是我想用 jinfo -flags看一下 JVM 初始参数,JDK 6 竟然还不支持 -flags 。
  然后我不知道是不是尝试了 jmap -heap 还是就看了一眼 jmap -help以为不支持 jamp -heap,反正最后我是通过 jconsole来观察的 JVM。一看 JVM 参数明显就是默认没特殊设置过,并且奇怪的是对内存一共采用了 700 多M。700M 和 15G 比,差哪儿去了,没道理啊,问题没出在堆上。
  然后我尝试执行 GC 操作,然而并没有任何改善。直到这里,我严重怀疑是出现了内存泄漏了。
  于是我执行了 jmap -dump,把堆、线程信息 dump 下来,然后拉到本地分析。不看不知道,一看吓一跳,线程多到令人窒息。
  不得不说,有一点他们做的非常好,竟然贴心的给线程编了号,没错,就是有这么多线程 10万多个。于是我们算了一下假设 10分钟请求 300 次,那就是 300 个线程,一小时就是 30 x 6=1800,一天24小时就是1800 x 24=43200,两天多的时间 10万多个线程那就正好对上了,好牛x的样子。
  一个线程默认占用空间大小 1M,10万多个线程那就是 10个多G,加上堆内存占用和机器上其他服务的内存占用,内存飙到 15G 就对的上了。谁的问题谁处理
  有问题就找问题就这么难吗,不承认自己的程序有问题是怎么想的呢。
  好啊,你们自己不查,我帮你找到问题原因了,满意了吧。
  于是,同事理直气壮的把上面那张截图发给他们,但是没有额外说一句话。
  下午,微信群里对方发来消息,问题已修改,可以再试试。
  然后,好多天过去了,问题没有再出现。规避问题
  有的同学问了,系统能创建10万多个线程吗,有可能的。这篇文章是「你假笨」大神写的 Linux 系统下能创建多少个线程的源码分析 club.perfma.com/article/244…,有兴趣可以上去看一看。
  这个问题产生的原因就是线程创建了但是没有销毁,估计是销毁逻辑写的有些问题吧。
  抛开逻辑错误不说,使用线程的正确做法是使用线程池,以免带来不必要的性能损耗和这种未加控制、未及时销毁带来的线程无止境创建的问题。
  作者:古时的风筝
  链接:https://juejin.im/post/5ea0f2a2f265da47aa3f7b0f

一加Nord2官宣首发天玑1200AI定制版!处理器还能这么玩?跑分风波似乎并没有影响到一加。近日,一加在海外也带来了新机OnePlusNord2。该机定位为中端,其搭载的处理器也很有意思。此前,也曾有消息称一加同样会在国内推出中端机型,所以一Reno6星黛紫即将开售配色绝美,加19。9还能抽限量版盲盒对当代的时尚青年来说,天天不离手的手机早已不只是单纯的工具。一款设计精美做工精致的手机还能同时担当起时尚单品的功能,凸显自己的审美和品位。而在这一点上,今夏的爆款手机OPPORen骁龙888都跑不满的60帧游戏,iQOONeo5为何能实现120帧?暑期一直都是一个换机的旺季,有不少准大学生在准备着自己上大学所需的电子产品,入手一款新手机自然是不容错过的。而在众多机型中,iQOONeo5在两千元价位段中成为了一大热门,是许多大最好看的紫色?OPPOReno6星黛紫即将开售,这颜值性能不圈粉才怪相信大家知道,紫色是一个比较难以驾驭的颜色,但对于紫色,各大手机厂商始终偏爱有加,其中最具代表性的莫过于OPPO,包括R15星空紫Reno4香芋紫都是其推出过的以紫色为主色调的机型严查滴滴!滴滴所有渠道被封,遭众打车平台落井下石抢市场最近估计滴滴公司的股东及高管们是食不知味夜不能寐吧。在滴滴违规被调查之际,滴滴面临着内忧外患,为何这么说,来我们细细看一下。首先,为什么说内忧,因为滴滴现在不能开疆扩土的吸收新用户国家市场管理总局ATMB垄断行为再次作出顶格处罚,包含22宗大案7月7日,国家市场监督管理总局再次出手,针对阿里腾讯美团滴滴苏宁等互联网大厂的垄断行为进行顶格处罚,每家处罚金50万元,这已经不是第一次针对上述公司的垄断行为实施处罚,2020年就滴滴下架,网约车平台跃跃欲试,新一轮补贴大战即将打响一鲸落,万物生。滴滴出行在被下架之后,最活跃的就是各大网约车平台,高德滴答一喂出行都开始了对乘客和车主的巨额补贴,为的就是在这个特殊时期尽可能多的抢占市场。而滴滴也开始改变以往的态HarmonyOS2升级用户数突破3000万封面新闻记者孟梅付文超7月8日,华为对外宣布,自6月2日发布HarmonyOS2后,历时一个多月,升级用户数已突破3000万。记者了解到,在EMUI11时期,华为实现升级用户数破千亿级像素方向没错!小米有可能全球首发两亿像素的相机近年来各大手机厂商发力最猛的就是相机,所以在这种趋势下,相机硬件有了巨大的进步,有媲美单反的超大底传感器,还有最高120X变焦的潜望式长焦镜头,以及超过一亿的像素等等这其中,亿级像理想汽车CEO大型社死现场诅咒脑子里都是汞为何引发众怒被誉为造车新势力的三驾马车蔚小理一直以来都以营销著称,而其营销基因自然来源于能说会道的三个创始人李斌,何小鹏以及李想。三个人的社交平台风格各有不同,李斌和何小鹏以凡尔赛著称,而李想方向排序皆学问!笔记本接口位置对体验有啥影响?细心的用户不难发现,随着笔记本进一步轻薄化,它们的外部扩展接口也随之减少,会对用户日常的使用造成一定的麻烦。本文,就让我们探讨一下笔记本接口位置对体验的影响吧。接口的位置既然谈到了
小米笔记本Pro15增强版,模具未变,却拥有顶级的屏幕性能配置近期,小米偷偷地对笔记本设备开展了自动更新,产生了全新的小米笔记本Pro15增强版,与标准版比起处理器由i511300H和i711370H升级为i511320H和i711390H,未来,已来。深度解析三星Galaxyfold1当当当,大家好,我是胖李玩机,关于Galaxyfold1(以下简称fold1)的测评一直想发,但又觉得使用时间短,所以呕心沥血了五卷原浆手纸之后,这篇测评算是千呼万唤始出来。以下仅搅局高端手机市场IQOO8Pro小米MIX4和荣耀Magic3Pro,挺谁?文焦运杰校对李俊慧团队中兴摩托罗拉小米荣耀伴随主要智能手机品牌纷纷发布下半年全新旗舰产品,彻底拉开了下半年新品智能手机的竞争序幕。2021年8月17日,vivo旗下IQOO子品牌对三星电子的新款可折叠手机表现不错在线售罄真的有那么好吗?ZFold3和ZFlip3的早期销量高于去年的Note20系列2021年8月20日,人们在首尔江南区瑞草洞的SamsungDelight的可折叠手机广告牌前经过。三星电子的可折叠手从4288跌至2118,鸿蒙系统7nm轻薄机身,华为旗舰低价来袭华为P50系列已经发布了,遗憾的是全系均是4G手机,想当初华为布局5G手机非常早,首款SANSA双模5G手机,就是由华为发布,现在因为5G射频没有得到供货,因此没有5G手机使用,也iPhone手机在充电的时候出现闪电接口检测到液体的提示怎么办?用过iPhone的小伙伴们,不知道你们在使用iPhone手机充电的时候有没有出现过检测到接口存在液体,的这种情况呢?在iPhoneXSXR系列中,苹果为大家增加了一项新的充电警告,手机推荐Redmi红米K40这款智能手机怎么样?手机的配置非常高,处理器内存屏幕摄像头在手机的各个方面都做得非常好。用了两天,下载了常用的应用和游戏,运行很流畅,没有卡顿闪退和发热现象。拍摄方面,红米K40采用了4800万三摄组荣耀Magic3首批购买者收货,用户真实评价出炉,部分好评令人感动荣耀CEO赵明曾经有一句话在手机行业中引发了热议,他表示未来荣耀Magic将超越华为Mate和P系列,部分不明真相的人会觉得荣耀公司太狂妄了,但事实上在如今的局面下出现这种情况并不智能手机时代来临,为什么见不到翻盖手机的出现了其实不必多说什么,翻盖手机在智能手机时代来临,的确就像一页历史翻过了,因为没有了手机按键,都是屏幕,甚至到后面全面屏时代来临,好像手机制作成翻盖的意义就没有了,但是在功能机的时候,荣耀平板V7Pro首发的迅鲲1300T有多强,看完你就知道了远程办公移动办公场景的兴起带动了平板电脑市场的火热发展,终端厂商以及芯片设计厂商也纷纷入局。上周荣耀推出了全新旗舰平板荣耀平板V7Pro,随着这款平板的亮眼发布,其首发搭载的联发科VivoiQOO8Pro安兔兔跑分超82万分,和平精英高帧率表现不错VivoiQOO8Pro首发三星E5材质,各方面配置都拉满,就连拍照也表现得不错,虽然比不上主打拍照的手机,但拍照效果并不差。iQOO8Pro搭载骁龙888Plus芯片,支持LPD