队列 高性能disruptor内存

5个接口性能提升的通用技巧

前言 作为后端开发人员,我们总是在编写各种API,无论是为前端web提供数据支持的HTTP REST API ,还是提供内部使用的RPC API。这些API在服务初期可能表现不错,但随着用户数量的增长,一开始响应很快的API越来越慢,直到用户抱怨:“你的系统太糟糕了。” 我只是浏览网页。为什么这么慢 ......
接口 性能 技巧

什么是Rabbitmq消息队列? (安装Rabbitmq,通过Rabbitmq实现RPC全面了解,从入门到精通)

Rabbitmq 一: 消息队列介绍 1.介绍 消息队列就是基础数据结构中的 "先进先出" 的一种数据机构。想一下,生活中买东西需要排队,先排队的人先买消费,就是典型的 "先进先出"。 # 扩展 redis: 可以作为简单的消息队列 celery: 本事就是基于消息队列进行的封装。 2.MQ解决了什 ......
Rabbitmq 队列 消息 RPC

.NET性能优化-使用RecyclableMemoryStream替代MemoryStream

提到MemoryStream大家可能都不陌生,在编写代码中或多或少有使用过;比如Json序列化反序列化、导出PDF/Excel/Word、进行图片或者文字处理等场景。但是如果使用它高频、大数据量处理这些数据,就存在一些性能陷阱。 今天给大家带来的这个优化技巧其实就是池化MemoryStream的版本 ......

Redis的数据被删除,占用内存咋还那么大?

通过 CONFIG SET maxmemory 100mb 或者在 redis.conf 配置文件设置 maxmemory 100mb Redis 内存占用限制。当达到内存最大值值,会触发内存淘汰策略删除数据。 除此之外,当 key 达到过期时间,Redis 会有以下两种删除过期数据的策略: 后台定 ......
内存 数据 Redis

通过 CancellationToken 提高 Web 性能

在 Web 开发中,经常会遇到这样的场景:用户发起一个请求,Web 服务器执行一些计算密集型的操作,等待结果返回给用户。这种情况下,如果用户在等待结果的过程中取消了请求,那么服务器端依然会继续执行计算,这样就会造成资源浪费。 为了解决这个问题,我们可以使用 CancellationToken 来提高 ......
CancellationToken 性能 Web

使用 BenchmarkDotNet 比较指定容量的 List 的性能

我们之前提到 List 是 .NET 中常用的数据结构,其在存储大量数据时,如果能够指定它的初始化容量,就会有性能提升。这个优化的方法并不是很明显,因此本文将使用 BenchmarkDotNet 库,通过定量对比的方式来证明这一点。 实验过程 引入 BenchmarkDotNet 首先,我们需要在项 ......
BenchmarkDotNet 容量 性能 List

Kafka技术专题之「性能调优篇」消息队列服务端出现内存溢出OOM以及相关性能调优实战分析

本篇文章介绍Kafka处理大文件出现内存溢出 java.lang.OutOfMemoryError: Direct buffer memory,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。 ......
性能 实战分析 队列 实战 内存

【Java难点攻克】「NIO和内存映射性能提升系列」彻底透析NIO底层的内存映射机制原理与Direct Memory的关系

Java类库中的NIO包相对于IO包来说有一个新功能就是 【内存映射文件】,在业务层面的日常开发过程中并不是经常会使用,但是一旦在处理大文件时是比较理想的提高效率的手段,之前已经在基于API和开发实战角度介绍了相关的大文件读取以及NIO操作的实现,而本文主要想结合操作系统(OS)底层中相关方面的内容... ......
内存 难点 底层 NIO 原理

【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?

我有一个在主机中运行的Docker容器(也有在同一主机中运行的其他容器)。该Docker容器中的应用程序将会计算数据和流式处理,这可能会消耗大量内存。 该容器会不时退出。我怀疑这是由于内存不足,但不是很确定。我需要找到根本原因的方法。那么有什么方法可以知道这个集装箱的死亡发生了什么? ......
节点 容器 故障 内存 心得

Mqttnet内存与性能改进录

1 MQTTnet介绍 MQTTnet是一个高性能的 .NET MQTT库,它提供MQTT客户端和MQTT服务器的功能,支持到最新MQTT5协议版本,支持.Net Framework4.5.2版本或以上。 MQTTnet is a high performance .NET library for ......
内存 性能 Mqttnet

RabbitMQ、RocketMQ、Kafka延迟队列实现

延迟队列在实际项目中有非常多的应用场景,最常见的比如订单未支付,超时取消订单,在创建订单的时候发送一条延迟消息,达到延迟时间之后消费者收到消息,如果订单没有支付的话,那么就取消订单。 那么,今天我们需要来谈的问题就是RabbitMQ、RocketMQ、Kafka中分别是怎么实现延时队列的,以及他们对 ......
队列 RabbitMQ RocketMQ Kafka

痞子衡嵌入式:低功耗&高性能边缘人工智能应用的新答案 - MCXN947

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦MCX系列MCU的新品MCXN947。 自 2015 年恩智浦和飞思卡尔合并成新恩智浦之后,关于它们各自的 Arm Cortex-M 内核通用微控制器代表作系列 LPC 和 Kinetis 接下来怎么发展一直没有定论(两个系列都在 ......

一次TiDB GC阻塞引发的性能问题分析

背景 前不久从项目一线同学得到某集群的告警信息,某个时间段 TiDB duration 突然异常升高,持续时间6小时左右,需要定位到具体原因。 分析过程 第一招,初步判断 由于项目条件苛刻,历经苦难才拿到监控,在此之前只能靠现场同学的口述排查,oncall人太难了。。 既然是duration升高,那 ......
性能 问题 TiDB

看完这篇,还不懂JAVA内存模型(JMM)算我输

欢迎关注专栏【JAVA并发】 前言 开篇一个例子,我看看都有谁会?如果不会的,或者不知道原理的,还是老老实实看完这篇文章吧。 @Slf4j(topic = "c.VolatileTest") public class VolatileTest { static boolean run = true; ......
模型 内存 JAVA JMM

JAVA中生成随机数Random VS ThreadLocalRandom性能比较

前言 大家项目中如果有生成随机数的需求,我想大多都会选择使用Random来实现,它内部使用了CAS来实现。 实际上,JDK1.7之后,提供了另外一个生成随机数的类ThreadLocalRandom,那么他们二者之间的性能是怎么样的呢? Random的使用 Random类是JDK提供的生成随机数的类, ......

深入理解 Python 的对象拷贝和内存布局

在本篇文章当中主要给大家介绍了 python 当中对象的拷贝和内存布局,以及对对象内存地址的验证,最后稍微介绍了一下 cpython 内部实现列表的结构体,帮助大家深入理解列表对象的内存布局。 ......
拷贝 布局 对象 内存 Python

数据结构初阶--栈和队列(讲解+类模板实现)

栈 栈的概念和结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)加粗样式的原则。 入栈:从栈顶放入数据的操作。 出栈:从栈顶取出元素的操作。 栈的实现 ......
数据结构 队列 模板 结构 数据

MQ系列8:数据存储,消息队列的高可用保障

MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系列6:消息的消费 MQ系列7:消息通信,追求极致性能 1 介绍 在之前的章节中,我们介绍了消息的发送 ......
队列 消息 数据

Java阻塞队列中的异类,SynchronousQueue底层实现原理剖析

上篇文章谈到BlockingQueue的使用场景,并重点分析了ArrayBlockingQueue的实现原理,了解到ArrayBlockingQueue底层是基于数组实现的阻塞队列。 但是BlockingQueue的实现类中,有一种阻塞队列比较特殊,就是SynchronousQueue(同步移交队... ......
队列 异类 SynchronousQueue 底层 原理

【Java并发入门】02 Java内存模型:看Java如何解决可见性和有序性问题

如何解决其中的可见性和有序性导致的问题,这也就引出来了今天的主角——Java 内存模型。 一、什么是 Java 内存模型? 导致可见性的原因是缓存,导致有序性的原因是编译优化,那解决可见性、有序性最直接的办法就是禁用缓存和编译优化,但这样虽然解决了问题,但也导致带来的性能优化都没了。 因此,解决方案 ......
有序性 Java 模型 内存 问题

CAP 7.0 版本发布通告 - 支持延迟消息,性能炸了?

前言 今天,我们很高兴宣布 CAP 发布 7.0 版本正式版,我们在这个版本中带来了大批新特性以及对性能的优化和改进。 自从今年 1月份发布 6.0 版本以来,已经过去了快1年的时间。在过去的将近1年的时间里,我们也发布了几个次要版本和小版本(6.0.1, 6.1.0, 6.2.0, 6.2.1), ......
通告 性能 版本 消息 CAP

.net6&7中如何优雅且高性能的使用Json序列化

.net中的SourceGenerator让开发者编可以写分析器,在项目代码编译时,分析器分析项目既有的静态代码,允许添加源代码到GeneratorExecutionContext中,一同与既有的代码参与编译。这种技术其实是把一些运行时才能去获取程序集相关资源的方式提前到编译前了。 .net6开始, ......
序列 高性能 net6 Json net

Android 内存缓存框架 LruCache 的实现原理,手写试试?

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 在之前的文章里,我们聊到了 LRU 缓存淘汰算法,并且分析 Java 标准库中支持 LUR 算法的数据结构 LinkedHashMap。当时,我们使用 LinkedHashMap 实 ......
缓存 框架 LruCache 原理 内存

谁说.NET没有GC调优?只改一行代码就让程序不再占用内存

经常看到有群友调侃“为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!”真的是这样吗?今天我就用一个案例来分析一下。 昨天,一位学生问了我一个问题:他建了一个默认的ASP.NET Core Web API的项目,也就是那个WeatherForecast的默认项目模 ......
一行 内存 代码 程序 NET

Python:对程序做性能分析及计时统计

如果只是想简单地对整个程序做计算统计,通常使用UNIX下的time命令就足够了。由于我用的是Mac系统,和Linux系统的输出可能有不同,不过关键都是这三个时间:user: 运行用户态代码所花费的时间,也即CPU实际用于执行该进程的时间,其他进程和进程阻塞的时间不计入此数字;system: 在内核中... ......
性能分析 性能 程序 Python

【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内存不一致所引发的OOMKilled问题总结(上)

在我们日常的工作当中,通常应用都会采用Kubernetes进行容器化部署,但是总是会出现一些问题,例如,JVM堆小于Docker容器中设置的内存大小和Kubernetes的内存大小,但是还是会被OOMKilled。在此我们介绍一下K8s的OOMKilled的Exit Code编码。 ......
内存 问题 容器 Kubernetes JVM

【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内存不一致所引发的OOMKilled问题总结(下)

之前文章根据《【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内存不一致所引发的OOMKilled问题总结(上)》我们知道了如何进行设置和控制对应的堆内存和容器内存的之间的关系,所以防止JVM的堆内存超过了容器内存,导致容器出现OOMKilled的情况... ......
内存 问题 容器 Kubernetes JVM

(四) 一文搞懂 JMM - 内存模型

4、JMM - 内存模型 1、JMM内存模型 JMM与happen-before 1、可见性问题产生原因 下图为x86架构下CPU缓存的布局,即在一个CPU 4核下,L1、L2、L3三级缓存与主内存的布局。 每个核上面有L1、L2缓存,L3缓存为所有核共用。 因为存在CPU缓存一致性协议,例如MES ......
模型 内存 JMM

记一次 .NET 某工控软件 内存泄露分析

一:背景 1.讲故事 上个月 .NET调试训练营 里的一位老朋友给我发了一个 8G 的dump文件,说他的程序内存泄露了,一时也没找出来是哪里的问题,让我帮忙看下到底是怎么回事,毕竟有了一些调试功底也没分析出来,说明还是有一点复杂的,现实世界中的dump远比课上说的复杂的多。 还是那句话,找我分析是 ......
内存 软件 NET

记一次 .NET 某电子厂OA系统 非托管内存泄露分析

一:背景 1.讲故事 这周有个朋友找到我,说他的程序出现了内存缓慢增长,没有回头的趋势,让我帮忙看下到底怎么回事,据朋友说这个问题已经困扰他快一周了,还是没能找到最终的问题,看样子这个问题比较刁钻,不管怎么说,先祭出 WinDbg。 二:WinDbg 分析 1. 托管还是非托管泄露 一直关注这个系列 ......
电子厂 内存 系统 电子 NET