当前位置: 首页 > news >正文

rpc 异步非阻塞 io 配置 线程池和队列

相关 

   雪崩 - 如何重试 - sla和重试风暴的双保证_个人渣记录仅为自己搜索用的博客-CSDN博客

接口耗时公式

   耗时= cpu时间 + io时间

线程池数量

最佳数目 =  1s / 平均cpu时间 * 内核数. 

最大平均cpu时间 = 接口耗时- all外部io时间. 结合gc , linux本身其他线程, 只会还少点.

当前我们是没有统计的.

小实验:

     如附录, 200次, 2000次调用 11毫秒,  20ms 基本是50个线程池 * 8核 = 400 . 

线程队列的作用

  线程队列的好处就是 线程数目满了之后, 放到队列里 .

  坏处是 堆积, 堆积的时间也会提现在api接口耗时中. 

修正后的接口耗时

      耗时 = 队列等待时间 + cpu时间 + io时间

    注意 :  队列等待时间 不是 真正执行时间.

突破资源边界后的稳定性问题

      队列等待时间 =  队列数 * 接口真正执行平均耗时 ( cpu时间 + io时间 )  > 上游超时时间.

      继续重试, 队列继续填满 ,队列永远满.

附录: 

     200次方法调用.

public void test(){StopWatch stopWatch=new StopWatch("t1");stopWatch.start("initStopWatch");stopWatch.stop();stopWatch.start("newHashMap");Map<String,Object> map= Maps.newHashMap();int count=200;for (int i = 0; i < 200; i++) {put(map, i);}stopWatch.stop();stopWatch.start("initJson");Map<String,Object> map2= Maps.newHashMap();map2.put("1",1);String value1=   JSON.toJSONString(map2);String nu1=value1;stopWatch.stop();stopWatch.start("json");String value= JSON.toJSONString(map);String nu=value;stopWatch.stop();System.out.println("count="+count+",costTimeMs="+stopWatch.getTotalTimeMillis()+",cost="+stopWatch.prettyPrint());}private void put(Map<String,Object> map, int i) {map.put("i"+i,1+i);}

200次方法调用 8毫秒

count=200,costTimeMs=103,cost=StopWatch 't1': running time = 103530566 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
000002786  000%  initStopWatch
008225391  008%  newHashMap
094716069  091%  initJson
000586320  001%  json

2000次调用 11毫秒

count=2000,costTimeMs=121,cost=StopWatch 't1': running time = 121049705 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
000002787  000%  initStopWatch
011 254 439  009%  newHashMap
106417291  088%  initJson
003375188  003%  json

2万次调用 36毫秒


count=20000,costTimeMs=224,cost=StopWatch 't1': running time = 224199250 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
000004506  000%  initStopWatch
036 672 628  016%  newHashMap
167984038  075%  initJson
019538078  009%  json

相关文章:

rpc 异步非阻塞 io 配置 线程池和队列

相关 雪崩 - 如何重试 - sla和重试风暴的双保证_个人渣记录仅为自己搜索用的博客-CSDN博客 接口耗时公式 耗时 cpu时间 io时间 线程池数量 最佳数目 1s / 平均cpu时间 * 内核数. 最大平均cpu时间 接口耗时- all外部io时间. 结合gc , linux本身其他线程, 只会还少点. …...

【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS

JTS Java Topology Suite 几何计算&#xff1a; 1. 前端js就用这个 Turfjs的类库。参考网站&#xff1a; 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库&#xff0c;参考网站&#xff1a; JTS参考网站&#xff1a; 1. https://github.com/locatio…...

从Window中先多瞥几眼

JavaFx17官方文档中有如下的描述: Window类是一个顶层窗口类,在其中可以承载场景,并与用户交互。窗口可以是Stage、PopupWindow或其他类似的顶层窗口。 JavaFX Stage类是顶级的JavaFX容器。初级阶段由平台搭建。其他Stage对象可以由应用程序构造。 许多Stage属性是只读的…...

【STM32训练—WiFi模块】第二篇、STM32驱动ESP8266WiFi模块获取天气

目录 第一部分、前言 1、获取心知天气API接口 2、硬件准备 第二部分、电脑串口助手调试WIFI模块获取天气 1、ESP8266获取天气的流程 2、具体步骤 第三部分、STM32驱动ESP8266模块获取天气数据 1、天气数据的解析 1.1、什么函数来解析天气数据&#xff1f; 2.1、解析后…...

Maven私服

Maven 私服是一种特殊的远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。 建立了 Maven 私服后&#xff0c;当局域网内的用户需要某个构件时&#xff0c;会按照如下顺序进行请求…...

手写RPC总结篇

协议制定&#xff1a;client到server做交互的通信协议&#xff0c;比如request response 网络端点peer 难点1 : Jetty嵌入 ◆jetty Server ◆ServletContextHandler ◆ServletHolder jetty server 起到网络监听的作用ServletContextHandler注册到jetty server中ServletHolde…...

c++11 标准模板(STL)(std::ios_base)成员类型与常量

流打开模式类型 std::ios_base::openmode typedef /*implementation defined*/ openmode; static constexpr openmode app /*implementation defined*/ static constexpr openmode binary /*implementation defined*/ static constexpr openmode in /*implementation defi…...

我用 ChatGPT 写 2023 高考语文作文:全国卷(一)

【2023】新高考|卷 “好的故事&#xff0c;可以帮我们更好地表达和沟通&#xff0c;可以触动心灵、启迪智慧&#xff1a;好的故事以改变一个人的命运&#xff0c;可以展现一个民族的形象故事是有力量的。” 以上材料引发了你怎样的联想和思考&#xff1f;请写一篇文章 要求&…...

4.java转义符,javadoc 标签

java常用转义字符 在控制台&#xff0c;输入tab键&#xff0c;可以实现命令补全 (如何解决cmd中Tab键不能自动补充的问题&#xff1f;百度一下) \t : 一个制表符&#xff0c;实现对齐功能\n : 换行符\ \ : 一个\\ " &#xff1a;一个"\ ’ : 一个’\r : 一个回车 …...

PinYin4j库的使用

一、PinYin4j库简介 1、PinYin4j简介 Pinyin4j 是一个流行的 Java 库&#xff0c;支持汉字和大多数流行的拼音系统之间的转换&#xff08;汉语拼音&#xff0c;罗马拼音等&#xff09;。可自定义拼音输出格式&#xff0c;功能强大。 官网地址&#xff1a;http://pinyin4j.sou…...

日志框架 --- Logback

文章目录 1. 什么是logback2. logback的日志级别3. 日志级别的层级4. logback配置文件4.1 logger标签4.2 root标签4.3 appender标签4.4 filter标签4.5 encoder标签 5. 整体演示5.1 配置文件5.2 运行结果 1. 什么是logback Logback是一个用于Java应用程序的日志框架&#xff0c…...

QML 与 Python 交互

在 Qt 中&#xff0c;C 和 QML 交互一般有如下三种方法 上下文属性&#xff1a;setContextProperty( )向引擎注册类型&#xff1a;调用 qmlRegisterType( )QML 扩展插件&#xff1a;虽然有很大的灵活性&#xff0c;但是用 Python 创建 QML 插件比较麻烦&#xff0c;所以这种方法…...

React基础教程(三):JSX语法

React基础教程(三)&#xff1a;JSX语法 1、JSX简介 全称&#xff1a;JavaScript XMLreact定义的一种类似于XML的JS扩展语法&#xff1a;JSXML本质是React.createElement(component, props, ...children)方法的语法糖作用&#xff1a;用来简化创建虚拟DOM&#xff08;注意&…...

软件测试岗位都是女孩子在做吗?

听我一朋友说&#xff0c;测试岗位基本都是女孩子做。” 不知道是不是以前“软件测试岗”给人印象是“不需要太多技术含量”的错觉&#xff0c;从而大部分外行认为从业软件测试的人员中女生应占了大多数。比如有人就觉得&#xff1a;软件测试主要是细心活&#xff0c;所以女生…...

ARP协议,带你了解ARP协议

目录 一、ARP协议概述 二、使用ARP的四种情况 三、ARP缓存 四、ARP的工作原理 1. 地址解析 2. 地址缓存 五、ARP报文格式 1. ARP请求报文格式 2. ARP响应报文格式 六、免费ARP 七、代理ARP 一、ARP协议概述 ARP&#xff08;Address Resolution Protocol&#xff09;地…...

基于Java汽车客运站管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…...

0203使用规则-索引-MySQL

文章目录 1 联合索引1.1 最左前缀法则1.2 范围查询 2 索引失效2.1 常见情况2.2 数据分布影响 3 SQL提示4 覆盖索引和回表查询5 前缀索引6 单列和联合索引7 设计原则结语 1 联合索引 1.1 最左前缀法则 在Mysql数据库中创建了联合索引&#xff08;或称复合索引&#xff0c;即包含…...

LVS+Keepalived群集

一、Keepalived概述 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器&#xff08;MASTER&#xff09;和备份服务器&#xff08;BACKUP&#xff09;两种角色的服务器&#xff0c…...

抖音矩阵系统源代码开发部署--源码搭建

抖音矩阵系统是一个具有强大功能的开放性平台&#xff0c;通过数据挖掘技术能够实现精准的用户画像和个性化推荐&#xff0c;这也是抖音成为国内最受欢迎的短视频平台之一的原因之一。矩阵系统的开发需要大量的技术支持和数据分析&#xff0c;同时也需要综合运用大数据、机器学…...

如何用Jmeter进行接口测试 ,这应该是全网最详细的教程了

一、Jmeter 的使用步骤 打开Jmeter 安装包&#xff0c;进入\bin 中&#xff0c;找到"jmeter.bat", 点击打开即可。 在下图打开的Jmeter 页面中&#xff0c;右键“测试计划” -> “添加” -> "Threads(Users)" -> “线程组”&#xff0c; 建立线…...

5分钟掌握Windows安装Android应用的终极方案

5分钟掌握Windows安装Android应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过在Windows电脑上直接运行Android应用&#xff0c;却苦于复杂的…...

Rails AI上下文模块设计:领域驱动与AI服务集成实践

1. 项目概述&#xff1a;当植物病理学遇上AI代码助手最近在整理一个老项目时&#xff0c;我遇到了一个非常有意思的命名&#xff1a;“Peronosporaceaevenography165/rails-ai-context”。乍一看&#xff0c;这像是一个典型的GitHub仓库命名风格&#xff0c;前半部分是极其专业…...

6.1 图表选择指南

本章学习目标&#xff1a; 理解数据可视化的核心目的&#xff1a;探索 vs 解释掌握不同分析场景对应的图表类型了解每种图表的优势和局限学会根据数据特征和分析目标选择图表核心能力&#xff1a;不只会画图&#xff0c;更知道为什么画这张图一、为什么要做数据可视化&#xff…...

Audacity音频编辑完全手册:从零开始制作专业音频作品

Audacity音频编辑完全手册&#xff1a;从零开始制作专业音频作品 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 想制作播客却不知道如何剪辑&#xff1f;需要为视频添加背景音乐但找不到合适的工具&#xff1f;或…...

3分钟搞定Axure RP中文界面:全版本汉化终极指南

3分钟搞定Axure RP中文界面&#xff1a;全版本汉化终极指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文…...

Unity Addressable系统面板配置避坑指南:从Profile到Content Update,新手必看的10个关键设置

Unity Addressable系统配置避坑实战&#xff1a;10个关键设置详解 Addressable系统作为Unity资源管理的重要工具&#xff0c;其配置面板的复杂性常常让开发者望而生畏。本文将聚焦实际项目中最容易出错的10个关键设置&#xff0c;从Profile到Content Update&#xff0c;逐一剖…...

Illustrator脚本革命:7个必备工具彻底改变你的设计工作流

Illustrator脚本革命&#xff1a;7个必备工具彻底改变你的设计工作流 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否还在Adobe Illustrator中重复着枯燥的手工操作&#xff…...

苹果为何拒绝TD-SCDMA特供版iPhone?复盘技术标准与市场时机的战略博弈

1. 项目概述&#xff1a;一场关于苹果与中国移动的世纪猜想2012年的科技圈&#xff0c;空气中弥漫着一股躁动与期待。几乎所有的行业分析师和手机发烧友都在讨论同一个话题&#xff1a;苹果公司是否会为了全球最大的移动运营商——中国移动&#xff0c;专门推出一款支持TD-SCDM…...

NsEmuTools:5分钟搞定NS模拟器自动化管理的终极方案

NsEmuTools&#xff1a;5分钟搞定NS模拟器自动化管理的终极方案 【免费下载链接】ns-emu-tools 一个用于安装/更新 NS 模拟器的工具 项目地址: https://gitcode.com/gh_mirrors/ns/ns-emu-tools 你是否厌倦了手动安装和更新NS模拟器的繁琐过程&#xff1f;NsEmuTools作为…...

Windows安卓应用安装器:快速轻量级解决方案终极指南

Windows安卓应用安装器&#xff1a;快速轻量级解决方案终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上轻松安装安卓应用吗&#xff1f;厌倦…...