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

不可忽视的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的源码和注释中可以看到只有有返回值的接口才会返回线程池耗尽的错误信息;其它的情况则不会将错误信息返回给调用方,直到调用方超时。


靠目测和尺量评价车辆安全?这样的毛病该改改了安全是消费者选车最为看重的课题之一,而如何评价一款车型的安全则是一门大学问,仅靠目测和尺量来评价早已是老黄历了。说到汽车安全评价,就不得不提中国保险汽车安全指数CIASI,毕竟它采超级驾控,越级享受,COOLDRIVINGR汽车夏日驾控体验营激擎上演7月23日,COOLDRIVINGR汽车夏日驾控体验营,在北京海淀机场试驾场地上演,以科目试驾体验的方式,将劲酷产品体验与驾趣相融合,致力于为都市新中产带来时尚夏日生活方式,用科技技术长城,长城汽车3。0T9AT9HAT超级动力总成品鉴技术是一家汽车公司的竞争力的体现,作为中国汽车企业的领军者,长城汽车凭借着过度投入的研发理念,在技术变革中取得众多突破,使科技长城愈加深入人心的同时,也为全球化发展夯实了基础。近几奥迪上半年销量破纪录,保时捷上半年业绩强劲增长奥迪上半年销量破纪录日前,奥迪官方发布半年财报信息,数据显示,今年上半年,奥迪集团的销售收入达292。12亿欧元,增长42。7营业利润为31。13亿欧元,去年同期为7。5亿欧元。税云效Codeup代码评审效率超高,近期又推出智能语法服务功能近期云效Codeup接二连三搞事情,在国内率先推出代码智能语法服务功能。智能语法服务提供了基于云端备份的快速代码导航服务,无需本地克隆即可在页面体验熟悉的本地IDE通用的代码导航功花生壳更新Windows客户端5。3版本,支持4K屏幕近日,国内知名内网穿透软件花生壳更新了Windows客户端5。3版本,本次更新通过重构代码,修复BUG的方式提升了用户的使用体验,解决了部分用户出现客户端崩溃的问题,并新增了高分辨双敏能力及云原生DevOps工具链云效携手亮相阿里云峰会5月28日举办的阿里云峰会主论坛上,云效以助力企业构建双敏能力,实现十倍效能提升的定位闪亮登场,阿里巴巴高级研究员兼阿里云智能基础产品事业部负责人蒋江伟亲自发布。双敏组织即为组织敏元宇宙平台Bloktopia获420万美元融资GunRaiders将登陆Oculus(VRPinea9月26日讯)今日重点新闻元宇宙平台Bloktopia获420万美元融资,本轮融资由AnimocaBrands领投VR硬件厂商MegadodoSimulationGFacebook计划更名,专注构建元宇宙战神2018上架PC平台(VRPinea10月21日讯)今日重点新闻Facebook计划在下周公司年度Connect大会上,更改公司名称,专注构建元宇宙VR培训平台PraxisLabs获1550万美元A轮arpara观影播控平台UltraMovie全面更新,提升一站式高清观影体验近日,国内新锐VR厂商arpara旗下的新产品arpara5KVR头显自9月正式发货以来,在各大社群中受到了爱好者们的争相讨论,不少用户也对其同期推出的官方观影播控平台UltraM雷鸟发布MicroLED波导AR眼镜Labster收购VR护理培训平台UbiSim(VRPinea10月18日讯)今日重点新闻TCL雷鸟创新发布业内首款双目全彩MicroLED光波导AR眼镜丹麦初创公司Labster收购全球首个VR护理培训平台UbiSim集合啦
iPhone13双十一会降价吗?不会降价,双十一的主力军是iPhone12系列,iPhone13系列现在看来,如果能供货充足,按时发货就很好了。或许会出现一种情况,iPhone12系列降价幅度大,iPhone13MySQL小技巧删除大表数据时,droptable执行不下去怎么办背景最近遇到了一个坑,MySQL数据库服务器硬盘容量告警,而且因为非技术原因,还不能追加硬盘。通过监控发现,磁盘IO一直100。直接影响就是系统处理时间越来越长,接口响应耗时也越来一份加班表悄悄疯传,真正加班最重的群体却无处倾诉文化纵横孙中伟华南师范大学黄婧玮华东理工大学导读近日,一份以各大互联网公司为主的公司作息表在网上流传。发起者称,希望通过这一活动,促进社会重视加班问题,推进工作机制的真正变革。事实上,长期美国财政部官员警告用稳定币交易将触发一系列问题由于美国证券交易委员会(SEC)最终可能批准比特币基金交易,首只美国比特币基金可能于下周开始交易。美国财政部高级加密货币监管员兼负责国内金融的财政部副部长梁内利(NellieLia苗圩汽车产业链供应链需补短板强弱项来源人民网汽车的产业链供应链需要补短板强弱项。日前,在2021全球新能源与智能汽车供应链创新大会上,全国政协经济委员会副主任苗圩表示,未来要加大对车规级芯片车用操作系统新型的电子电同样ARM处理架构,A15处理器性能为什么比高通骁龙强很多?比处理器跑分,都是分别在安卓和ios系统下的,苹果有ios加持,系统和处理器都是苹果开发的,兼容性更好,所以跑分高。如果单轮芯片性能,骁龙未必差太远。同样华为的海思,也很接近苹果的L2级别自动驾驶辅助系统,零跑C11好在哪儿?零跑C11的驾驶芯片来自于其自研的国产芯片凌芯01,其多项驾驶辅助功能,实现了优势超越。零跑C11的L2级别自动驾驶辅助系统,拥有28个智能感知硬件,配备5个毫米波传感器,能够实现扫地机器人的天花板,UONI由利A1Pro让你真正享受什么叫坐享其成导语十一刚过,很多人选择出游,满身疲惫地回到家,你是选择在沙发上一趟还是打扫满地的灰尘?相信99。9的人都会选择前者,先睡一觉再说,我是休了2天才缓过来。现在给你一个两全其美的办法终于降价了!麒麟9000鸿蒙系统,华为Mate40Pro不再高傲对于华为手机,相信大部分用户都已经接受它在高端市场上的形象,旗舰机方面有着很出色的口碑和销量,但去年那波打压后,华为不能再继续生产自研芯片,麒麟9000处理器是用一片就少一片,本身索尼手机将搭载魅族Flyme系统,这下硬件软件都完美了我们都知道,目前全球手机市场基本已经变成了国产手机的秀场,除了三星苹果这两个巨头依然屹立外,其它国外手机品牌基本都没立足之地了。可能不少人都想不起除了三星苹果以外其他国外手机品牌的科沃斯T5max扫地机器人,性价比超高随着历史的车轮滚滚向前,扫地机器人发展至今已经成为了我们家庭清洁不可或缺的一员,以往扫帚拖把累断腰人工拖洗泪两行的时代已经一去不复返了。实事求是地说,扫地机器人是时代和消费者群体的