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

不可忽视的Dubbo线程池避坑指南

  推荐阅读:
  阿里巴巴4面Java岗位:算法+性能调优+并发+多线程+数据库
  Dubbo+Kafka+MyBatis+reids+Spring+多线程等,学完就去面试BAT问题描述线上突然出现Dubbo超时调用,时间刚好为Consumer端设置的超时时间。有好几个不同的接口都报超时了第1次调用超时,第2次(或第3次)重试调用非常快(正常水平)Dubbo调用超时的情况集中出现了3次,每次都是过一会自动恢复排查排查日志
  看到调用超时,首先就拿着traceId去服务提供方查日志。 奇怪的是,在服务提供方的业务日志里面,只有正常的调用日志(耗时正常),没有超时调用的日志。 从正常的调用日志里面看,一切都是正常的,看不出所以然。 给人的感觉就是超时那次请求的调用没有达到服务提供方。此时系统活动情况
  通过系统历史监控,我们发现除了gc比平时稍微高一点外(也在正常水位),没有其他的异常;CPU、内存、网络等指标都在正常范围。查看Dubbo线程活动情况
  第2次系统集中超时报警的做的第一件事就是登录到那台服务器查看dubbo线程活动情况:看下能不能找到阻塞在哪一行代码。很遗憾,所有的dubbo线程都没有阻塞,都是正常的WAITING状态。
  并没有明显表明阻塞在某段代码,这可难倒我们了:如果没有阻塞的话,为什么dubbo调用方会报超时?继续看代码该接口是否存在阻塞的代码?
  硬着头皮重新看代码每一个分支,突然发现底层的一个方法中有http调用!会不会是这个http调用导致的超时?如果是的话,那么不同的接口调用超时的情况就说的通了,因为上层大部分接口都会调用这个底层方法。
  怀揣着激动的心,仔细看了http调用的逻辑:用的是JDK提供的HttpURLConnection,其中只用了HttpURLConnection#getContentLength方法,并且也在finally代码块中将这个连接关闭了。好像也不是这个引起的,起初还以为getContentLength会把文件给下载下来,但是看了接口文档以后发现只会去读头信息中的ContentLength。    /**      * Returns the value of the {@code content-length} header field.      * 

* Note: {@link #getContentLengthLong() getContentLengthLong()} * should be preferred over this method, since it returns a {@code long} * instead and is therefore more portable. * * @return the content length of the resource that this connection"s URL * references, {@code -1} if the content length is not known, * or if the content length is greater than Integer.MAX_VALUE. */ public int getContentLength() { long l = getContentLengthLong(); if (l > Integer.MAX_VALUE) return -1; return (int) l; }   代码阻塞的情况可能性也不大,因为重试请求不会超时:如果代码阻塞,那么重试请求大概率也会超时。数据访问层是否有异常情况   既然代码没有阻塞,那么有没有可能是数据访问层的异常造成的呢?毕竟不止一个接口存在超时的问题,如果是底层数据访问层的异常导致,那么也说得通。   重点排查了mysql,但结果是令人失望的:并没有慢SQL;并且dubbo超时期间,mysql实例的CPU和内存水位都是正常的。   除了mysql、redis实例本身指标正常外,基于上面同样的理由:如果数据访问层有问题,那么重试基本上也会超时。所以数据访问层导致超时的线索也被排除。有没有可能是Dubbo层面的问题   排查再次陷入僵局,逼迫着我们重新梳理排查思路:除了代码阻塞除了数据访问层异常除了超时请求,其他请求的日志都是正常的   那么还有可能会导致超时呢?会不会是Dubbo本身异常导致的?   此时有一个关键的线索进入我们的视野:超时的那次请求去哪儿了?   在服务提供方的日志里面没有超时请求的的日志,只有重试请求成功的业务日志。太奇怪了,就算超时总的留下日志的吧,日志都不留,欺负我胖虎吗?!   到这里想到超时的请求可能是一个突破口,于是开始看Dubbo的相关的源码和文档。   从官方文档中的服务端调用链一层层往下查   在AllChannelHandler源码中看到了令人兴奋的注释:   兴奋之余,为了避免理解偏差,还特地用百度翻译了一下   没错,如果线程池已经满了,那么服务端不会返回,直到客户端超时!这不是正式我们碰到的问题吗?! 并且此时还没有进入业务代码,所以没有打印业务日志,这样就可以解释为什么没有服务提供方没有超时请求的日志了。   别激动,这里明明有返回threadpool is exhausted异常信息,怎么能说没有返回呢? 别急,这是另外一个项目引用的dubbo,版本是2.6.2。 回到出问题的那个项目,查看dubbo版本:2.8.6,查看AllChannelHandler源码:是的在2.8.6版本中,并没有返回这个错误   问题好像找到了,OK,剩下的就是验证了。验证准备将DubboServerHandler线程池的最大线程数调到5使用Apache Bench进行压测:200请求、并发10个线程case1:复现问题Dubbo使用2.8.6版本预期:部分请求超时报错,重试耗时正常压测结果符合预期:部分接口报错超时,并且重试请求耗时正常case2:验证猜想Dubbo使用2.6.2版本预期:部分请求报错线程池耗尽threadpool is exhausted,并且重试大概率也会报该错误压测结果符合预期   至此,基本判定线上Dubbo调用超时的问题就是因为线程池耗尽引起的。   这个超时问题前前后后查了一周左右,排查过程中试了很多排查方向,为了叙述方便就没有展开。   避坑指南合理设置Dubbo线程池大小。默认是200合理设置超时时间。如果真出现了Dubbo调用超时的情况,合理的超时时间能够避免服务调用方被打爆Dubbo接口必须有返回值。从AllChannelHandler#received的源码和注释中可以看到只有有返回值的接口才会返回线程池耗尽的错误信息;其它的情况则不会将错误信息返回给调用方,直到调用方超时。


魅族17pro12256和魅族188128,哪个好?手持魅族17p,四月份苏宁3199入手。现在价格已降到2999了吧。当然18也降价了,具体价格看平台。两款手机都是高颜值,18小屏手机,轻,曲面屏,稍贵。17p略重,卧床玩久了手累最低2000元!盘点618最便宜的曲面屏手机小米并未上榜TAS好物曲面屏手机曲面屏有没有用?喜欢的人觉得曲屏手机视觉冲击力更强更好看,不喜欢的人觉得太过鸡肋还容易误触,总之这一设计一直争议很大。自从曲面屏出现在手机上以来,这种屏幕一直是谷歌Android12除名华为,华为已无留恋,鸿蒙OS即将推送前几天谷歌正式带来了Android12,此次新系统的最大改变是采用新的设计语言,用户的自定义程度更高。其次就是在安全方面的保护更进一步。就在安卓12发布之后,谷歌就宣布了首批的体验荣耀手机更新,你们更了吗?感谢提问,我的是荣耀9X,这手机发布就买了,手机收到更新我就更新了。非常期待harmonyos啊,灰常灰常期待。我荣耀10,很久没有升级通知了根据公布的更新名单,荣耀30和V30系有一说一,Mate40Pro和X60Pro哪款拍照好?在对比之前不得不提一嘴,这两款手机的价格实在太大了!Mate40Pro起步价为6299元,还是8128G的丐版(这个价格还给128G起步就是丐版,其他手机也一样),主流的8256G618大促很快就来临,2021年那些顶级旗舰,实际口碑到底怎样?618到了,很多网友肯定想换机了,我也简单汇总上半年旗舰的表现,仅供参考小米11优点影音系统,手感好,影像系统成熟(性价比高)缺点外观一般,发热严重iqoo7优点充电快,游戏强,系据说支付宝的花呗和借呗要被停了,是真的吗?先说好,用的时候是你让我用的,现在要停跟我也没有关系!我欠的花呗和借呗你要是停了我可就不还了啊。我没有能力消费你借钱给我消费,告诉我可以分期,现在你停了我可没钱一次性还清,这是你违全面清退比特币挖矿,会产生重大影响吗?高能耗污染问题何解?短期对币圈的影响是比较大的,尤其是会让很多数字货币呈现一个暴跌的状态,但是长期来看对整个挖矿是一个利好的消息。首先来讲,此番行动并不是要完全将比特币从中国市场中排挤出去。而是要进一想买续航持久,内存够大的手机,尤其能不卡顿,可不可以推荐一波?续航久不卡顿是很多人关心的事,都希望购买的手机能达到这个水准。关于手机不卡顿的事。如果从专业角度阐述这个问题很多人怕是看不明白,这里我简单从实际表现结果来说明。手机的卡顿,简单点说怎么样才能加入大量本地微信群?可以这样说吧,我每天轻松能找到至少50个微信群,还是免费的,像这种群啊,不是吹牛啊,要多少有多少!直接超级干货分享。找群的手法很多的,就分享一个最适合新手的,5分钟就能学会的技巧吧为什么夏普电视现在那么多差评?2028hr我劝大家千万千万别买夏普,谁买谁后悔一辈子。说说我的经历,2017年购买厦普后,今天8月6日开机没反应,打电话400后8月19日返维修点检表,一个星后告知我显示屏坏了,
舆论中心的阿里巴巴或许是我过于狂妄,作为一个非成功人士不该说这些话,但大多数网民确确实实愚昧,只要有舆论引导加之有心之人的煽风点火,评论言语的夸张程度真是让人瞠目结舌。一个能成为大公司的企业,它的经看到华为今年营收少2千多亿,才知倪光南是对的,可惜联想没听他华为公布了2021年的营收数据,总计才6千多亿,比2020年的8千多亿少了足足的2千多亿。一年营收少了2千多亿这是什么概念?2千多亿已经足以收购整个小米。如果把这2千多亿用来搞研发罗永浩怒喷苹果CEO库克你们的产品团队是完全失控了吗?三言财经1月2日消息,昨日,锤子科技创始人罗永浩在微博上艾特库克,并就一些产品体验问题质问称导入音乐后自动退出CD的功能是哪个丧心病狂的产品经理取消的?知道这个愚蠢的改动有多不人性还在curd吗?封装属于自己的SpringStarter什么是StarterStarter是SpringBoot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境(条件)进行自动配折叠屏手机为啥火了最近,折叠屏手机有点火。一系列新品密集发布,价格也下降至万元以内。2021年12月15日,OPPO推出旗下首款折叠屏手机FindN,售价7699元起。12月23日,华为发布折叠屏手刘强东果然有眼光,偷偷养大两个千亿独角兽,已成为京东新王牌点击关注,每天精彩不断!导读刘强东果然有眼光,偷偷养大两个千亿独角兽,已成为京东新王牌!都说互联网的魅力是无穷的,如今来看也确实如此网络世界瞬息万变,并暗藏着很多的机遇,只要你抓住时代的回忆MP3MP4MP5MP6,你还记得吗?你一定听说过MP3,这是一种数字音频格式,也代表一个时代的数字音频播放设备也一定听说过MP4,它不仅可以播放音频,也可以播放电影电视剧,小巧易携带,价格也便宜,十年前,在大屏智能手把自己的iPhone桌面设置的个性酷炫,你会吗?把自己的iPhone桌面设置的个性酷炫你觉得下面这个屏幕够酷炫吗?喜欢的话耐心看完这篇文章,非常简单。谢谢你的支持,点赞转发关注我,有更多的iPhone设置及技巧在等着你去发掘。首Go语言核心36讲(Go语言实战与应用十二)学习笔记34并发安全字典sync。Map(上)我们今天再来讲一个并发安全的高级数据结构sync。Map。众所周知,Go语言自带的字典类型map并不是并发安全的。前导知识并发安全字典诞生史换中国自主攻克7项黑科技,均处于世界第一,美欧再封锁也没用图为量子技术尽管过去很长一段时间,美国都在动员西方国家对中国进行技术封锁,但西方的制裁非但没有起到作用,反而还让中国自主攻克了7项黑科技,并且均处于世界第一,这7大技术分别是量子技量子计算机研究上,中美共执世界之牛耳,日本耍滑头走了一条捷径量子计算机类在执行某些大规模计算的时候,它的速度会比最好的传统计算机快的多,能够在像密码破译,大数据优化,天气预报,药物分析的领域可以说大显身手。像日本经济新闻就报道说,如果借助量