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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • IT界最伟大的十位人物「建议收藏」

    IT界最伟大的十位人物「建议收藏」美国《电脑周刊》最近评出了“IT界最伟大十位人物”,苹果公司创办人史蒂夫·乔布斯(SteveJobs)凭借着创新精神和在苹果的二次创业排名榜首。    世界首富的微软董事会主席比尔·盖茨仅排名第三位,不敌万维网(Web)发明人蒂姆·伯纳斯·李。巧合的是,三甲排名人物都是在同一年出生。    上榜的十位人物大多世界闻名,而且富可敌国。例如,盖茨已经

  • POI jar包下载

    POI jar包下载POIjar包下载

  • 数组截取splice_splice返回值

    数组截取splice_splice返回值Javascript数组的splice方法介绍splice()方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。语法格式array.splice(start[,deleteCount[,item1[,item2[,…]]]])参数start必选指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于

  • Linux计划任务「建议收藏」

    Linux计划任务「建议收藏」计划任务的安排方式分两种:一种是定时性的,也就是例行。就是每隔一定的周期就要重复来做这个事情一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务at和crontab这

  • 用Protel 99 SE学习原理图的设计及pcb的绘制

    用Protel 99 SE学习原理图的设计及pcb的绘制学习Protel99SE的大致过程:原理图文件(*.Sch)–>网络表文件(*.NET)–>*.PCB 网络表文件:记录封装格式。 (封装是指元件的长宽、大小、位置。封装就是一种标准,用来规定元件制造出的实际大小) Pcb文件:它就是印制电路板的文件 protel软件:https://download.csdn….

  • 常见电商项目的数据库表设计(MySQL版)

    常见电商项目的数据库表设计(MySQL版)常见电商项目的数据库表设计(MySQL版)简介:目的:电商常用功能模块的数据库设计常见问题的数据库解决方案环境:MySQL5.7图形客户端,SQLyogLinux模块:用户:注册、登陆商品:浏览、管理订单:生成、管理仓配:库存、管理电商实例数据库结构设计:电商项目用户模块用户表涉及的实体改进1:第三范式:将依赖传递的列分离出来。比如:登录…

发表回复

您的电子邮箱地址不会被公开。

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