应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

我花了两天时间没解决的问题,chatgpt用了5秒搞定

  前言
  一个说难不难,说简单竟看不出来是哪里问题的一个bug。是的可能自己能力和经验尚浅无法识别,下面你们能否用火眼金睛一眼让bug原形毕露
  (这个问题是忽然暴露出来的,无任何征兆,没人改动过,生产上运行了很长时间,故很奇怪,所以这个间谍看来很会隐藏)隐藏的间谍
  下面先来看代码(伪代码)code两个从数据库查询的耗时任务paramcountDownLatchparamallpublicstaticvoidtestCount(CountDownLatchcountDownLatch,ListStringall){for(inti0;i2;i){intfinalIi;ThreadPoolFactory。getGeneral()。execute((){try{ListStringcountListnewArrayList();这里之所以用for循环,是因为查询业务需要0和1两个状态去查询if(finalI0){这里其实是查询数据库的mapper操作,为了方便演示countList。add(1);countList。add(2);countList。add(3);}else{这里其实是查询数据库的mapper操作,为了方便演示countList。add(5);countList。add(6);countList。add(7);countList。add(8);}if(countList!null){all。addAll(countList);}}catch(Exceptionex){ex。printStackTrace();}finally{countDownLatch。countDown();}});}}线程池类publicclassThreadPoolFactory{privatestaticfinalLoggerloggerLoggerFactory。getLogger(ThreadPoolFactory。class);privatestaticfinalThreadFactoryGENERALTHREADFACTORYnewThreadFactoryBuilder()。setNameFormat(generalpoold)。build();corePoolSize:核心线程池大小maximumPoolSize:最大线程池大小keepAliveTime:线程最大空闲时间unit:时间单位workQueue:线程等待队列四种队列1。ArrayBlockingQueue:有界队列,2。SynchronousQueue:同步队列,3。LinkedBlockingQueue:无界队列,4。DelayQueue:延时阻塞队列threadFactory:线程创建工厂handler:拒绝策略四种策略1。ThreadPoolExecutor。AbortPolicy():2。ThreadPoolExecutor。CallerRunsPolicy():3。ThreadPoolExecutor。DiscardOldestPolicy():4。ThreadPoolExecutor。DiscardPolicy()privatestaticfinalExecutorServiceGENERALnewThreadPoolExecutor(5,10,30L,TimeUnit。MILLISECONDS,newLinkedBlockingQueue(4096),GENERALTHREADFACTORY,newThreadPoolExecutor。AbortPolicy());publicstaticExecutorServicegetGeneral(){returnGENERAL;}}main方法测试publicstaticvoidmain(String〔〕args)throwsException{ListStringallnewArrayList();CountDownLatchcountDownLatchnewCountDownLatch(2);testCount(countDownLatch,all);countDownLatch。await(10,TimeUnit。SECONDS);System。out。println(all);}复制代码
  对于上面CountDownLatch不了解的的可以看下我历史的文章:干货!CountDownLatch的使用场景
  看到这里不知道你们能否看出端倪,先说问题结果吧,最后的这个all集合为空,生产上的接口也是同样的问题,我上面的代码是和生产上的1:1复制的伪代码。
  我先说下我的排查思路:1、线程池问题,我认为是线程没有被及时的回收,时间太长,并发数过高,导致线程不够用,第一想到的是便是线程数需要增加
  2、数据库数据过多,导致查询比以前慢出一个量级,最后队列阻塞,拖垮线程(这个概率比较低,因为数据库查询很快返回,并没有需要优化的慢sql)
  3、怀疑是这个循环造成的,比如某种机制少循环或者不循环,去掉for循环依然没解决问题验证第一位间谍
  首先扩大核心线程数和最大线程数,将这俩参数扩大为10和20privatestaticfinalExecutorServiceGENERALnewThreadPoolExecutor(10,20,30L,TimeUnit。MILLISECONDS,newLinkedBlockingQueue(4096),GENERALTHREADFACTORY,newThreadPoolExecutor。AbortPolicy());复制代码
  扩大之后,放上去能查出数据了,感觉解决了这个大问题
  那句话怎么说来着,真相往往不是那么的容易发现,最先抓到的都是小鱼小虾,果不其然,运行了一周左右,同样的问题又出现了,感觉这就是一水缸,你把水缸变大,终有蓄满的一天。我们都知道,线程池可不是越大越好。
  那么真相究竟是什呢,看到这里的小伙伴如果你已经有了答案,可以先去评论区评论,不要看下面的答案。借助GPT侦探柯南
  chatgpt这里我就不多说了,这个东西如果现在还不了解的,那我就就只能求求你赶紧去了解下吧
  我把生产上的代码完整的贴上去,他是这样回答的
  不得不说,一语中的,仅5秒就把我们所能想到和不能想到的都回答出来了
  很显然,第二点,第三点我们基本上验证通过了
  那就是第一点了,其实我们早就应该想到这一点的,多线程环境下,线程安全问题是首位的!!!找出真凶
  使用synchronized关键字解决线程安全
  使用synchronized关键字来同步访问all列表,即在多个线程访问all列表时,使用同一个锁来保证线程安全,避免出现数据不一致的问题。这样就解决了多个线程可能会同时访问并修改数据,导致数据丢失或损坏的问题。
  聪明的你有没有找出真凶呢???
  还记得我们加大线程数来解决问题吗,我又问了一个问题
  扩大线程池的参数可能会提高程序的并发处理能力,但并不能从根本上解决问题。如果是由于数据同步问题导致的线程池查不到数据,那么扩大线程池只是把问题暂时推迟了而已。此外,扩大线程池的核心线程池数量也会占用更多的系统资源AI已来,未来已来
  再啰嗦一句,AI的强大这里就不再强调了,接下来我会持续利用GPT输出很多干货和其他AI生态的东西,都收在下方的AI专栏里,一起学习,一起成长,欢迎关注下方的AI专栏,点赞,谢谢各位看官
  作者:苏世
  链接:https:juejin。cnpost7219978250847928357

郭艾伦表态坚持离队!与薪资无关,或为2兄弟出头,辽篮令人心寒近日,辽宁男篮遭受了许多媒体的质疑与批评,不少球迷认为辽宁男篮实在是太冷血了,纵观最近几年的球员更换以及球队阵容的改变,可以看到许多优秀的老将在辽宁男篮需要更新换代的时候被迫淘……抄书的第83天孩子不听话,99是没用对方法佛家讲九九八十一难,我是抄书抄了80多天后,身体严重报警了,我现在嗓子哑了,所以有时候更喜欢坐在那里写字,避免说话了。不过本身我也是个思想极度活跃却不一定把想法都会说出来的人。……赛博朋克动作新游二进制上架Steam!明年初发售由独立游戏开发者FortyWorks开发的赛博朋克风动作游戏新作《二进制(Binary。)》现已上架Steam,本作预计将于2023年初正式发售。本作中玩家将在游戏中的网……好活当赏!幻塔新副本好评不断,体系搭建终于成功了?最近,《幻塔》的新版本正式上线了,此次更新的内容有很多,像各种各样的活动,夏日活动小玩法全部更新等等。还要关于经典副本虚空裂隙的改动。新的虚空裂隙副本难度增加了不少,主要……华为儿童手表4Pro新款评测让家长和孩子都满意的手表什么样?7月4日,华为举行了nova10系列及全场景新品夏季发布会,在众多新品当中,有一款面向孩子的产品:华为儿童手表4Pro新款,相信很多家长对于华为儿童手表4Pro并不陌生,之前我……白银再次暴跌!会破新低吗?深度分析现在是2022年8月18日,白银昨日延续下跌收低,最高反弹在19。8一线承压,今天要考验19。5的得与失,目前节奏稍显缓慢且停顿。打破了此前的弱势上扬格局,但回调的空间看似也还……21!拒绝张玉宁式悲剧,20岁留洋中场首秀,务实比入5大联赛中国男足和女足都迎来了留洋的新时代,球员们越来越务实,以踢上比赛为导向,选择合适自己发展的海外队伍。中国女足队员落后欧美球员并不是很多,所以基本都能在高水平联赛立足,王霜选择去……分析我国数字化经济快速发展的原因是什么2018年中国数字经济市场规模为31。3万亿元,2019年中国数字经济市场规模为35。8万亿元,2020年中国数字经济市场规模为40。5万亿元同比增速13。16。在政策推动下,……夏季活动第三期来袭,探幽皮肤是假饼,下一款典藏上线时间曝光大家好,我是阿呆。这里将会给你带来王者荣耀最新的爆料内容。随着王者荣耀更新之后,又有一些皮肤上线,关于夏季活动,目前可以确定还有第3期,但是今年的夏季活动好像并没有什么重……恭喜!田志希拿下世乒赛亚运会参赛资格,将向梦曼莎发起挑战您好我是乒谈,关注我,每日获取【乒乓球资讯】和【技战术干货】。这两天,韩国乒协正在组织队员参加国家队派遣选拔赛,这个比赛还有一项任务就是选拔出来亚运会、世乒赛参赛名单。……这种新材料,有望成为最好的半导体来源:内容由半导体行业观察(ID:icbank)编译自mit,谢谢。硅是地球上最丰富的元素之一,其纯净形式已成为许多现代技术的基础,从太阳能电池到计算机芯片。但硅作为半导……千年养生第一人,活到141岁,被称为药王,他是怎么做到的?公元682元,药王孙思邈去世,百姓一边哀悼药王离世,世间从此少了妙手回春之人,一边又为药王的实际年龄吵翻天,毕竟,药王活得太久,以至于让百姓忘记他的出生年月日。有人说药王……
MIUI13新版本推送,底层升级安卓12,这两款小米手机可升小米MIUI系统是基于安卓系统底层开发,小米MIUI系统也被一些用户称为优化最好的安卓系统UI,小米MIUI系统在升级更新方面还是比较积极的。最近小米向小米11i和11i……今日比赛前瞻中国vs日本,对话国足狭路相逢,此役当亮剑中国男足将于27日在日本东京进行的2022年卡塔尔世界杯亚洲区预选赛12强赛B组第七轮,中国男足将客场挑战日本队。在26日的赛前新闻发布会上,中国队主教练李霄鹏表示:客场……穿越火线导火索剧情尚可一试的免费枪战体验我无法想象,在2021年的今天,穿越火线也能出个剧情模式。在小学的时候,穿越火线就是唯一的神,即使是我家那破烂电脑也能带得动。时隔多年,再次下载好穿越火线的高清大区,说实……曼谷探店Papaya世界最大的古董商店Papaya世界最大的古董商店Papaya古董仓库是各个国家vintage爱好者来曼谷必来踩点的一处地方。整个仓库占地面积超过5000,一共有三层楼,现在仓库还在不……天影沉默区区爆满还在在为找不着人气值爆棚的传奇烦恼?挖空心思时间精力各大网站找传奇,进N个手机游戏全是全屏幕看不到几人,连智能机器人的都没?我是真不知道说啥好图片,你是想玩单机手游嘛??……令人惊叹的世界建筑(49张照片)令人惊叹的世界建筑(49张照片)匈牙利布达佩斯的渔夫堡垒1hr这座垂直花园位于西班牙马德里2hr俄罗斯圣彼得堡清真寺的大门。由建筑师尼古拉瓦西里耶夫设计……周末赖床睡懒觉到底好不好?延年益寿周末(星期六、日)赖床睡懒觉到底好不好?对身体是好是坏?瑞典卡洛琳斯卡医学院最新研究表明,周末赖床,在某种程度上有延年益寿的功效。英国BBC中文网5月25日报道,周末赖个……美媒列出了2022年最好的20名自由球员,哈登最大牌NBA的交易截止日期距离结束也不远了,自由市场有不少出色的自由球员,但并不是所有自由球员的去留都能影响联盟。因此,美媒《Fadeawayworld》的作者凯尔涂抹列出了2022……热血传奇麻痹戒指虫子能爆?还有玩家真的信了,还是它爆率高传奇作为一款已经运营了二十年的游戏,游戏世界中的各种物品都已经是非常多了,而这其中能够直接体现玩家强大与否的装备种类更是非常的多。如果要问到具体有多少种武器我想可能也不会有几个……春天如何养生春季的三个月,大地复苏,万物萌芽,是除旧迎新的季节,也是养生的好时机。气温变暖,人体的新陈代谢也开始变得旺盛,这时就需要养肝补脾。春季,地湿之气渐升,易困脾,春节养生要调……结束了,所有归化球员都不能把中国当家,多人改回国籍或成真?北京时间3月31日,根据北青消息,4名巴西归化球员可能都在中国找不到工作了,也可能就此缘尽国足。如果成为现实,那么中国足球将以最糟糕的方式结束归化政策花了钱,没成绩,没未来。……力压蚂蚁集团和马斯克的SpaceX,全球最大独角兽诞生,老板我国白手起家的富豪榜首,既不是香港首富李嘉诚,也不是台湾经商之王的王永庆,甚至都不是电商领导者马云,而是字节跳动的张一鸣!3月24日,胡润研究院发布了《2022胡润全球白手起家……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网