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

线程池优化与监控

  有赞技术 有赞coder
  点击关注" 有赞coder "
  获取更多技术干货哦
  作者:明义、光线
  部门:业务技术
  一、前言
  随着应用不断的迭代更新,零售工程内异步任务逐渐增多,包括网络请求、本地 DB 操作、轮询等任务使用的都是同一个线程池,线程池极易打满(比如网络一慢就容易阻塞线程池),导致任务堆积,造成「操作卡顿」的现象。用户看到操作没反应,可能会更频繁的尝试操作,再加上不断轮询的任务,应用的线程池队列会快速积压更多的任务,「卡顿」现象加剧,单一线的线程池已经无法支撑业务需求:
  任务没有隔离,异步任务相互影响主要是长耗时影响短耗时任务  轮回任务开销大:没有统一的轮询处理方式,业务方需要自己创建线程或线程池(有些干脆就在默认的 I/O 线程池进行轮询),应用中存在大量的自建线程池,增加无谓的资源消耗  缺少监控:缺乏线程池的监控和日志,线程池的运行状况和健康度无法衡量,一旦出现「卡顿」问题,排查非常困难,完全不知道是哪些任务造成的问题,伤害用户体验的同时,也极大的消耗开发人员的精力
  图注:短时间任务暴涨的情况,在几毫秒内触发多次任务
  二、整体设计目标:任务隔离,避免耗时任务影响交互  统一轮询,减少资源开销  任务监控,防止业务方使用错误  信息采集与监控,快速定位排查问题
  优化的核心在于分离和监控
  分离:
   对原有的 I/O 线程池进行拆分,分离出不适合放在这个线程池的任务,保证 I/O 线程池能对大量、快速的本地任务给予更好的支持,而分离的关键就在于分离出「慢」和「多」的任务:  避免耗时短的任务等待耗时长的任务  避免频繁、大量执行的任务占据大量的线程池资源
  具体的策略包括:  将网络请求的线程分离出来,放入单独的线程池中,避免因网络任务慢阻塞本地的快速任务  将轮询任务分离出来,当轮询的任务耗时过长或者线程池打满的场景下,会极速加剧线程池的恶化,最终让主流程完全瘫痪,轮询任务不适合放在通用的线程池中,通过将它放入通用的轮询任务线程池,统一化的对轮询任务进行管理
  监控:除了已知的网络任务&轮询任务需要分离出 I/O 线程池之外,还需要增加对线程池的监控,进一步分离出不适合放在I/O线程池的任务(同样是「慢」和「多」)通过监控每个任务执行的时长,分离出长耗时(即「慢」)的任务,分析出是因为逻辑 bug 还是本身的复杂度正常占用,如果是正常占用就考虑是否合适继续放在默认的 I/O 线程池,最终目标是达成对「慢」的优化  另外零售工程中还存在短时间大量重复任务堆积的现象,当线程池接近或达到负荷状态时,监控线程池中的任务,找到批量的任务,然后进行优化,最终目标是达成对「多」的优化  通过上面的方式将「慢」的任务分离出去之后,并不代表这样就完事了,这些任务可能会消耗大量的系统资源,所以同样需要统一对这个线程池进行监控(主要是网络任务的监控),把慢网络请求找出来,达到对「慢」的进一步优化  通过 API 监控业务方使用合理性,比如:使用多线程轮询的合理性
  三、技术实现2.1 线程管理库
  目标:  管理工程内所有线程池与线程创建  子线程任务监控  线程池隔离任务分开执行,使用不同线程池执行不同任务  轮询任务的统一与异常任务的过滤  线程池的自动最优设置  线程库结构图
   线程池管理,目前会提供三种线程池:  网络线程池:针对网络任务。更改方式:直接在网络库替换业务方无感知  IO 线程池:针对本地异步任务。更改方式:App 启动时 Hook RxJava 线程池替换业务方无感知  轮询线程池:针对轮询任务,需要业务方的接入
  线程池 API 定义  3.2 轮询任务统一禁止时间间隔小于 1 秒轮询任务,防止高频轮询消耗资源  所有轮询任务巡检间隔 1 秒检测一次  轮询检测是独立的线程,只做轮询检测,有任务时死循环间隔检测,没有任务时则睡眠等待下次注册执行,根据结果轮询执行或睡眠  线程任务模式有两种:
  单线程回调:  表示最多占用一个线程。例:1 秒轮询回调 1 次,再回调前会判断上个任务是执行完成,如果没有执行完成则回调 pollTaskExceptionCallback(),如果已经执行完成则回调 pollTaskCallback()
  多线程回调: 表示最多占用 30 个线程。例:1 秒轮询回调 1 次,再回调前会判断当前任务占用线程总量,如果没有执行完成则回pollTaskExceptionCallback(),如果已经执行完成则回调。pollTaskCallback() 默认是单线程回调  业务方可以指定轮询次数,或设置无限轮询  轮询线程池动态扩容:初始线程为 30 个,如果使用线程等于核心线程则动态扩容 2 倍,最大限制 120 个核心线程  轮询任务流程图
  轮询 API 定义  任务过滤:
  轮询正常回调 pollTaskCallback() 方法,如果异常这时将回调到 pollTaskExceptionCallback() 方法。
  异常任务过滤的实现:  记录所有任务。  每次执行任务时会进行校验,校验监听者是否已经把自己申请的线程全部使用,如果已经全部占用将回调异常方法,直接到任务有一个释放后再继续回调。  任务执行完后重设记录数据。
  轮询异常回调有三种触发场景:  单线程任务没有释放超时。  多线程任务占用线程超过最大数量。  轮询线程池被全部占满超时。  任务过滤-流程图
  四、工程更改
  工程更改主要分为 5 块:  网关请求线程池的替换,在构建 RxJava observable 替换成自定义网络线程池。  RxJava 默认线程池的替换,App 启动时把 RxJava Hook 设置成自定义 IO 线程池。  轮询业务接入统一轮询。  网线线程池使用错误拦截,目的防止线程使用错误,禁止 IO 线程网络请求,通过拦截器方式实现。  线程任务监听设置给 APM ,通过 APM 分析上报。
  备注:只有轮询需要业务方逐个替代其它都正常使用不感知。  五、信息采集与监控任务提交之后记录每个任务的调用栈信息以及任务提交的时间,之后在任务真正开始执行时会记录任务开始的时间,任务执行完成后即可算出一个任务完整的执行时间、任务等待时间等,这样就可以抓取出「慢」的任务  在任务执行完成时,如果线程池已满并且任务的等待时间超过阈值,则会拉出线程池任务栈的信息,用于查找出异常的任务  线程池监听 API
  任务监听实现流程
  改善效果:
  卡顿定义:包含主线程超过300ms慢方法、ANR、本地子线程操作超过1s、线程池阻塞、页面渲染时间超过200ms。  卡顿次数趋势图
      图注:卡顿次数下降 76%
  六、未来规划支持更多维度的任务监控,并增加自动报警能力  针对不同的机型进行最优线程池配置,最大化复用系统资源  逐渐完善 pthread、线程任务数量等监控能力

高端扫地机器人推荐,让你安心选购随着科技的发展我们正逐步进入智能互联时代,很多家居常见的小家电类产品都具备了智能科技属性,这其中最受大众家庭喜爱的就要属实用性特别强的扫地机器人产品。市面上日益涌现的扫地机器人牌子小白选购扫地机器人技巧你想要的我都有生活节奏越来越快,身为996的上班族,根本没有时间去打扫卫生,所以越来越多的人购买扫地机器人。扫地机器人给我们带来了很大的便捷,可以有更多的时间去做自己喜欢的事情今天就给大家讲一些扫地机器人逐渐走入越来越多的家庭,正确的使用方式随着科技的进步与发展,扫地机器人变得越来越智能。扫地机器人的出现,改变了传统的清洁方式,让人们彻底解放双方实现家居清洁。那么在使用扫地机器人的时候,应该要注意什么?大家都知道吗?相省委政研室到小白智能科技调研,赞扬打造智能党建机器人创新形式4月27日,省委政策研究室副主任张炜东一行到长春新区就党建工作进行专题调研。在新区党工委副书记唐继东等陪同下,来到小白智能科技(长春)股份有限公司调研。调研组对小白智能科技党组织一小洁扫地机器人性价比和功能等多方面,都有着明显优势很多人对于扫地机器人的感受就是扮演的智能家居吉祥物的角色,偶尔傻傻撞墙也能被一众人等称之为萌。而近几年,智能扫地机器人经过不断地进化,早已成为一般家庭不可或缺的实用家务清洁电器扫得入手智能扫地机器人之前,这些扫地机器人干货必须要了解很多人都不想做家务活,所以在我们繁忙的时候,总是希望能有个任劳任怨的工具人来帮助我们就好了。而现在,这个愿望终于可以实现了给家里入手一款智能扫地机器人!家里有了扫地机器人之后,面对中国移动和彩云助用户畅享数智化发展红利一朵云可以做什么?自然界中,白云可以遮蔽烈日,乌云中的丰沛水汽能够缓解干旱。而在数字世界,中国移动和彩云可以实现数据存储管理办公高效便捷游戏流畅愉悦生活美好智慧。11月2日,以云上中国移动产品创新融合发布会召开咪咕发布元宇宙MIGU演进路线图11月2日下午,以云上精彩,共创数智生活为主题的2021中国移动全球合作伙伴大会产品创新融合发布会在广州召开。中国移动咪咕公司总经理刘昕以搭乘5G信息高铁加速通往元宇宙为主题,与现人工智能创业还有哪些新机遇?抓紧把握!9月17日,在上海举行的2018世界人工智能大会上,百度阿里巴巴腾讯三大巨头的掌门人同台谈论人工智能(AI),直言AI大势势不可挡。百度公司创始人兼CEO李彦宏表示现代化就是AI化腾讯战略升级消费互联网为基础,产业互联网崛起今天,即将迎来20周岁生日的腾讯,正式启动新一轮整体战略升级。我们在连接人连接数字内容连接服务的基础上,将进一步探索更适合未来趋势的社交内容与技术的融合,并推动实现由消费互联网向产关键既能天马行空又能埋头苦干的创业老马尽管中国互联网创业成功概率只有5,但跨界领域孕育着更多创业机会,天下武功,唯快不破,无论是大企业还是初创公司,好像都被这个时代赋予了一个新的成功要素,快!小白人品牌创始人关键关键,
家春秋特别制作七夕脱单秘籍迢迢牵牛星,皎皎河汉女,又到牛郎织女相会时,七夕浪漫来袭!每年七夕这样的中国传统节日点,都是各大品牌节日营销的必争之地,多做品牌曝光传递品牌文化和价值。在2021七夕营销大战中,为自动驾驶新一波热度来临近日在自动驾驶领域相继爆出重量级新闻。4月13日,北京市政府办公厅印发北京市智能网联汽车政策先行区总体实施方案。其中的内容简单概括就是1。自动驾驶测试车可以上高速了2。驾驶位上可以粉转路Linksys已成为历史昔日的超神爆款,如今却仅剩空壳?一直是Linksys的忠实用户,前段时间上头下单了Linksys的mx10600,最近app更新了方便点了,之前一塌糊涂,老房子网络线路都不通,想买个mesh走无线,但是确实真的不酒香入棋局楚汉弈峥嵘华科聚智汉酱杯象棋VIP排位赛圆满落幕2021年5月29日,由华中科技大学武汉校友会企业家协会主办,华科聚智商学院承办,并携手贵州茅台酱香酒营销有限公司武汉茅和五商贸有限公司共同举办的华科聚智汉酱杯象棋VIP排位赛盛大宠粉就是宠你618超级宠粉节盛大启动又是一年618,各个电商平台摩拳擦掌,各大汽车品牌亦是蓄势待发。此次,长城汽车基于对用户的深刻洞察,持续贯彻以用户为中心的营销理念,与用户价值共创,拥抱互联网,盛大启动主题为玩在一2021年中国科技投资趋势报告(完整版本)来源甲子光年250页深度报告8大科技赛道全景式扫描9大原创分析模型实战应用300张图表量化结论60位业内专家深度访谈报告共计250页,受篇幅限制,仅展示部分。完整版领取方式见文末温企业战略管理(285页高质量PPT,系统性学习)数据表明,战略规划的失败率高达5097。然而,商业大师们仍在不断推出战略规划书,公司每年在内部战略团队和管理顾问上花费数百万美元,可效果却事倍功半。战略可以明确企业转型升级的方向,企业数字化转型思路方法工具与案例向永清企业数字化转型势在必行!数字化企业是以客户为中心通过数字化技术推动自身业务重塑和转型的企业。IDG对IT和企业决策者的调查结果显示,企业的数字化转型将为企业带来员工生产力提升为自己找个理由好好喘口气社会发展忒快,随着时间无情的流转,人们不得不在无尽的变化中追赶属于自己的一份净土,但人生不如意十有八九,这也致使了我们这些忙人不得不领悟了一项新技能自我治愈。如何保持好心态,平静且30年后,撸的时候还用手?太out!因为意念可以控制一切!大家肯定都YY过30年后50年后100年后我们的世界会是怎样的?我们的生活会变成什么样子?一直觉得,世界的发展是一个轮回,转了几圈之后我们又会回到起点,比如侏罗纪时代想想还是有点儿一锤重新玩情怀老罗的坚果要卖谁?8月25日,锤子科技发布了新品坚果手机,并宣称漂亮得不像实力派。当然,对于这款手机的关注点,是它的定价。899和999元的定价让老罗再一次打了自己的脸。连新手机命名为坚果也被网友笑