java 可达性分析算法_js并发请求

java 可达性分析算法_js并发请求作者:Grey原文地址:OkHttpClient调优案例实际案例系统运行一段时间后,线程数量飙升,持续居高不下排查工具https://fastthread.io/这个工具是在线的,可以将日志文件上传上去后直接生成分析报告,并且可以导出为PDF以下是我导出的分析结果值得关注的指标:和占了前两位,由于很多同事开发的时候,没有定义有意义的线程名称,所以这2031个线程不好排查,我们就从这里的线程数入手,很显然,这里是的使用问题,所以,我们排查了一下系统中所有使用的地方,发现所有的用法都是这样用的:因为我们

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

OkHttpClient 调优案例

作者:Grey

原文地址:OkHttpClient 调优案例

实际案例
系统运行一段时间后,线程数量飙升,CPU持续居高不下

排查工具
https://fastthread.io/

这个工具是在线的,可以将dump日志文件上传上去后直接生成分析报告,并且可以导出为PDF
以下是我导出的分析结果

值得关注的指标:

image

poolOkHttp ConnectionPool占了前两位,由于很多同事开发的时候,没有定义有意义的线程名称,所以pool这2031个线程不好排查,

我们就从OkHttp ConnectionPool这里的线程数入手,很显然,这里是Okhttp的使用问题,

所以,我们排查了一下系统中所有使用Okhttp的地方,发现所有OkhttpClient的用法都是这样用的:

image

因为我们有好多的服务,每个服务都可能会用OkhttpClient,所以图中的getHttpClient()方法遍布各地,这个方法有什么问题呢?

我们进到了OkttpClient的源码中,看到了这个构造方法,找到了原因:

image

这个构造方法中,每次拿一个OkhttpClient客户端,

就要new一个ConnectionPool

类似与每次new一个Thread就要new一个ThreadPool一样,

ConnectionPool完全是可以复用的,所以不需要new ConnectionPool,复用即可,

所以我们把OkhttpClient的获取逻辑修改成了以下:

image

即每个OkhttpClient复用一个ConnectionPool
为了验证,我特意在IDEA里面写了两个小程序来实验一下:

image

image

源码:

OkHttpClientNotSharePool

OkHttpClientSharePool

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234509.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dota2无限寻找服务器中,Win10玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案…

    dota2无限寻找服务器中,Win10玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案…《DOTA2》游戏,是一款RPG有些,在国内的玩家有很多,最近有位小伙伴打算在Win10电脑上与朋友一起玩《DOTA2》,却一直提示“已连接至DOTA2游戏协调服务器,正在登陆中”,无法顺利进入该游戏,很是郁闷,所以来问小编该如何解决?今天,小编就带大家一起去了解一下Win10电脑玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案。解决方案一:1、开始按钮在搜索中输入C…

    2022年5月13日
    129
  • oracle查询结果替换指定字符串_oracle按字符截取

    oracle查询结果替换指定字符串_oracle按字符截取1、拼接字符串格式一:可以使用”||”来拼接字符串select’拼接’||’字符串’asstrfromdual格式二:通过concat()函数实现selectconcat(‘拼接’,’字符串’)asstrfromdual注:oracle的concat函数只支持两个参数的方法,即只能拼接两个参数,如要拼接多个参数则嵌套使用concat可实现,如:selectconcat(concat(‘拼接’,’多个’),’字符串’)fromdual2.1、截取字符串

    2022年9月19日
    4
  • laravel 中使用tinker 验证驱动加载是否成功

    laravel 中使用tinker 验证驱动加载是否成功

    2021年10月26日
    52
  • 达芬奇五年沉浮

    达芬奇五年沉浮达芬奇五年沉浮

    2022年5月18日
    61
  • html实战-制作静态网页「建议收藏」

    html实战-制作静态网页「建议收藏」教程视频:http://edu.csdn.net/course/detail/535 从42开始制作的网页:http://www.cnos.co/整体思路:先布局再CSS控制骨架搭好了,初始化样式,后再弄CSS样式。注意:将CSS的样式导入到外部样式表时,要注意图片的位置,以及对外部样式表的引入  1、头部的背景图片的高度128px来自素材的图片高,容器的宽度大

    2025年9月15日
    6
  • 于Linux-2.6.32内核上编译ipset-6.23的坎坷经历[通俗易懂]

    于Linux-2.6.32内核上编译ipset-6.23的坎坷经历[通俗易懂]新版本的ipset上周在儿童医院给小小看病等待叫号的间隙,收到了Netfilter邮件列表的推送消息,一览了ipset最新的6.23版本的新特性,很多正是我目前所需要的,特别是timeout和skbinfo参数的支持,具体的详情请自行查看manual,如果不想看那么多,我这里简单的贴一下:  timeout      All set types supportstheoptional

    2022年9月1日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号