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)
上一篇 2025年6月2日 下午1:22
下一篇 2025年6月2日 下午2:01


相关推荐

  • UML工具:EA(Enterprise Architect)

    UML工具:EA(Enterprise Architect)EA跟RationalRose一样都仅仅是一个UML建模软件,随着对EA的熟悉发现EA的功能太强大了。EA跟RationalRose大不一样,RationalRose只是实现对软件的建模即构建系统的UML模型,而EA却不仅仅是实现这些功能。对于一个软件设计者来说,从需求分析到概要设计、详细设计、数据库设计到测试、发布、部署等一系列软件设计必须的操作都可以在EA中完成。可以说只需要一个EA就可…

    2022年7月12日
    22
  • 线程池参数配置详解[通俗易懂]

    线程池参数配置详解[通俗易懂]/***Createsanew{@codeThreadPoolExecutor}withthegiveninitial*parameters.**@paramcorePoolSizethenumberofthreadstokeepinthepool,even*iftheyareidle,unless{@codeallowCoreThreadTimeOut}isset.

    2022年6月28日
    25
  • com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别以及设定serverTimezone

    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别以及设定serverTimezone如果未明确设置 MySQL5 5 45 5 6 26 and5 7 6 版本默认要求建立 SSL 连接 如果你需要用 SSL 连接 就要为服务器证书验证提供信任库 并设置 是 mysql connector java5 中的 是 mysql connector java6 中的 不推荐不使用服务器身份验证来建立 SSL 连接 如果你不需要使用 SSL 连接 你需要通过设置 如果你有任何问题也可以私信我 看到后会回 为了符合当前不使用 SSL 连接的应用程序 但是你的 driver 用的还是 来显式禁用 SSL 连接

    2026年3月26日
    2
  • 2025世界AI大模型排行榜深度解析:技术选型与性能对比

    2025世界AI大模型排行榜深度解析:技术选型与性能对比

    2026年3月12日
    1
  • android attributeset,AttributeSet 的值用法

    android attributeset,AttributeSet 的值用法一 首先要在 res values 目录下建立一个 attrs xml 名字可以自己定义 的文件 并在此文件中增加对控件的属性的定义 其 xml 文件如下所示 二 接下来实现自定义 View 的类 其中下面的构造方法是重点 在代码中获取自定义属性 其代码如下 publicclassC publicCircle Conte

    2026年3月20日
    1
  • 5G路测下行速率优化指导书

    5G路测下行速率优化指导书5G 路测下行速率优化指导书如需源文档 请关注本公众号获取 概述 5GNR 系统在 LTE 原有技术的基础上 采用了一些新的技术和架构 在多址方式上 NR 继承了 LTE 的 OFDMA 和 SC FDMA 并且继承了 LTE 的多天线技术 MIMO 流数比 LTE 更多 调制方式上 支持根据空口质量自适应选择 QPSK 16QAM 64QAM 和 256M 等调制方式 NR 理论吞吐率计算与带宽 调制方式 MIMO 模式及具体参数配置有关 从 MAC 层的 TBS 选择来看 100M 带宽时单用户 UE 最大可以使用 273RB 256QAM 27 阶

    2026年3月19日
    2

发表回复

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

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