- 博客(50)
- 问答 (1)
- 收藏
- 关注
原创 分布式系统长尾延迟P95 和 P99 背后的数学与实战
【摘要】本文分析了分布式系统中平均响应时间低但P95/P99延迟高的现象,揭示了长尾延迟被放大的数学原理。通过建立概率模型(P=1-(1-p)^N)和具体案例(GC停顿、K8s调度抖动、Istio网络延迟),展示了fan-out并发场景下即使低概率慢事件也会显著推高尾延迟。文章提出三大优化方向:降低慢事件概率(如优化GC策略)、减少fan-out规模、增强资源隔离性(如Kubernetes资源配置),为分布式系统性能优化提供了理论依据和实践方案。
2025-12-22 12:03:26
538
原创 一次3PP升级导致 CPU 上升 30% 的排查
摘要:SpringBoot应用在第三方组件升级后出现CPU使用率上升30%的问题。通过分析发现,火焰图未显示明显热点,但YoungGC次数显著增加,表明对象分配速率上升。根本原因是Hibernate 6.4的HQL→SQL缓存失效(HHH-19560),导致每次查询都重新解析。由于解析成本分散在大量请求中,火焰图难以捕捉,但累积消耗大量CPU。修复后CPU下降20%,YoungGC频率回落。经验表明,火焰图对分散型CPU消耗不敏感,GC指标和ORM组件是性能排查关键。
2025-12-20 11:19:53
487
原创 12 个“大 TPS 规模效应问题”——现象 + 排查 + 常见解决
本文总结了大型IAM系统在高TPS(3k~20k)环境下常见的12类性能问题,包括负载不均、TCP队列溢出、Kafka积压、Redis热点、Oracle劣化、GC压力、线程池饱和、K8s调度延迟、多跳网络延迟、缓存一致性、容量瓶颈和级联雪崩。每类问题均给出典型现象、排查方法和解决方案,如调整LB策略、优化连接池、拆热点key、更新统计信息、合理配置线程池等。这些规模效应问题在小规模测试中难以复现,需要特别关注系统级的非线性放大效应。理解这些问题是提升性能优化能力的关键。
2025-12-11 12:06:16
1134
原创 async-profiler 火焰图宽度是否可信?哪些情况下会误导?(深度解析)
火焰图宽度并非绝对CPU时间:async-profiler火焰图宽度基于采样统计,反映的是函数被采样的概率分布,而非精确耗时。虽然通常能准确标识CPU热点,但在以下场景可能产生误导:1)极短函数因采样不足而缺失;2)阻塞状态线程不显示;3)JIT内联导致热点转移;4)Native调用栈不完整;5)容器CPU限制影响。建议配合perf工具、检查unknown比例及JIT日志进行交叉验证,并使用推荐配置(-ecpu -i1ms -j --cstack kernel)获取更准确结果。火焰图是强大的性能分析工具,但
2025-12-08 22:00:13
821
原创 Kubernetes 与 Istio 的网络通信
摘要:Kubernetes与Istio网络通信原理 本文深入解析Kubernetes与Istio的网络通信机制: Kubernetes原生网络: 由CNI插件实现Pod间L3/L4通信 kube-proxy通过iptables/IPVS处理Service负载均衡 CoreDNS解析Service域名 Istio服务网格: 通过Envoy sidecar代理应用流量 istiod控制平面管理xDS配置和证书 提供L7流量管理、mTLS等高级功能 典型通信流程: 流量被iptables重定向到Envoy Env
2025-11-09 12:00:46
951
原创 安德烈·卡帕西:深入探索像ChatGPT这样的大语言模型内容列表
视频目标与背景设定:为什么要做这个 “Deep Dive into LLMs”观众心智模型假设:主要面向技术/半技术听众,希望理解 LLM 内部机制本讲结构预览:从数据、tokenization,到模型内部、训练、推理、微调、RLHF、未来展望强调“直觉理解”比数学推导更为重点(视频多数为直觉 / 概念讲解)提到 Karpathy 自己以前做的相关工作、llm.c、社区工具等作为辅助参考。
2025-10-04 21:49:50
1035
原创 JMeter 执行流程
初始化阶段:解析测试计划,加载组件,准备数据。线程组生命周期:线程逐步启动 → 循环执行 → 线程结束。控制器与采样器:控制器负责逻辑,采样器负责请求,按树结构顺序执行。结果收集与汇报:采样结果通过监听器收集,并生成报表用于分析。理解这些流程,有助于在编写测试脚本时更加有的放矢,也方便在调优和排查问题时快速定位。
2025-09-28 15:35:48
959
原创 11. Jmeter性能与优化
JMeter性能测试优化建议摘要:1.避免低效代码阻塞线程,确保自定义脚本高效执行;2.负载测试时禁用所有监听器(如View Results Tree等),防止内存溢出和性能问题;3.关键优化措施包括:使用最新版JMeter、非GUI模式运行、CSV格式输出结果、合理使用后置处理器和断言(推荐正则表达式和Response断言)、优先选择JSR223+Groovy脚本;4.测试完成后生成报告。这些实践可显著提升JMeter测试效率和准确性。(参考:ubik-ingenierie.com博客)
2025-09-28 14:38:20
707
原创 SyncTimer实现原理
SyncTimer是一个设计优雅且功能强大的组件。组合优于继承:使用标准的 Java 工具类 () 作为其核心引擎。封装:将复杂的并发逻辑封装在delay()方法背后,为用户提供简单的接口。生命周期管理:通过挂接到 JMeter 的测试生命周期监听器,确保正确的初始化和清理。线程安全:通过精心设计的clone()方法和同步的setup()逻辑,正确地处理了跨线程的共享状态。通过理解这些原理,你不仅能更有效地使用SyncTimer,还能领会到其背后稳健的设计思想,从而更好地设计和优化你的性能测试方案。
2025-09-26 17:06:31
697
原创 AOP源码——JDK、CGLIB代理原理
1.JDK代理示例:public class ProxyTest { @Test public void testProxy() throws Throwable{ TestService testService = new TestServiceImpl(); MyInvocationHandler invocationHandler = new MyInvocationHandler(testService); TestServ
2022-05-20 22:56:52
561
原创 AOP源码——注册并获取对应代理
基本概念横切关注点切面(Aspect)连接点(JoinPoint)切入点(PointCut)通知(Advice)目标对象(Target)织入(Weave)引入(Introduction)
2022-05-18 17:45:56
651
原创 SPRING源码——DefaultListableBeanFactory方法processConfigBeanDefinitions
public void preInstantiateSingletons() throws BeansException { if (this.logger.isDebugEnabled()) { this.logger.debug("Pre-instantiating singletons in " + this); } // Iterate over a copy to allow for init methods which in turn register new bean d.
2022-03-21 18:39:56
663
原创 postgresql(PG)相关
postgresql备份恢复讲解: 这里我们的测试环境,只需要最简单最快的操作方法,冷备份PostgreSQL 最佳实践 - 冷备份与还原介绍——这个介绍得挺详细的!但,我觉得,可以直接备份压缩整个主目录,因为相关的txlog也不会很大PostgreSQL 数据目录结构======...
2021-08-04 18:23:32
171
原创 PT/linux/ansible/haproxy常用命令
打包跟压缩的区别:打包是指将多个文件或者目录放在一起,形成一个总的包,这样便于保存和传输,但是大小是没有变化的,压缩是指将一个或者多个大文件或者目录通过压缩算法使文件的体积变小以达到压缩的目的,可以节省存储空间,在压缩的时候通常是先打包再压缩;tar命令tar命令参数前面加”-"与不加“-”的区别:tar命令参数前面加不加“-”执行命令的结果是没有区别的,区别只要是在于linux风格方面,加“-”属于System V风格,不加“-”属于BSD风格,所以在使用tar命令的时候它的参数加不加“-”
2021-08-04 18:15:13
151
原创 json_schema
做input数据校验用json_schema很好。但有个问题,与http 207状态互斥了!因为207是部分成功,而json_schema只能在业务入口前就validate fail!
2021-07-26 18:24:48
139
原创 需要学习待处理
1. sql in 与 equal的区别如: select * from role where user_id='abc'select * from role where user_id in ('abc')=====
2021-07-16 16:38:30
130
原创 java线程相关
参考:1. 这个中断的相关知识容易忘,而且也是复杂了点,掌握这个,对语言特性了解非常有用Thread的中断机制(interrupt)
2021-07-02 16:35:50
112
原创 JVM工具相关
常用命令:这里主要介绍如下几个工具:1、jps:查看本机java进程信息2、jstat:性能监控工具3、jmap:打印内存映射信息,制作堆dump文件4、jconsole:简易的JVM可视化工具5、jhat:内存分析工具,用于解析堆dump文件并以适合人阅读的方式展示出来6、jvisualvm:功能更强大的JVM可视化工具7、jstack:打印线程的栈信息,制作线程dump文件jmap 1)jmap -heap pid:输出堆内存设置和使用情况(JDK11使..
2021-06-30 20:13:23
332
转载 多线程并发相关
ThreadLocal几个重要问题:1.为什么用软引用? 2. 推荐用private static 修饰? 3. 注意在线程池线程中使用threadLocal,要用finally remove相关引用:【并发编程&JVM】--- 强软弱虚四种引用 + ThreadLocal内存泄漏原因分析深入理解ThreadLocal的原理及内存泄漏问题...
2020-12-05 13:59:08
128
原创 韩顺平netty学习笔记
I/O 模型基本说明1)I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能2)Java共支持3种网络编程模型/IO模式:BIO、NIO、AIO3)Java BIO : 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销 【简单示意图】4)Java NIO : 同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求
2020-11-17 23:30:33
1394
1
原创 ideas插件开发参考
部门需要一个Jira与gitlab的集成功能1. gitlab已经提供了与Jira的 issue-id与git commit的连接功能了,在gitlab的每个项目里的setting就可以配置了2.需要定制一个git commit的限制规范,要求是开发人员在提交代码的时候,一定要记得在commit里写上Jira issue-id。====...
2020-08-24 10:40:30
243
原创 数据结构学习
1.BlockingQueue 参考: Java中的Queue之概述应用实例线程池ThreadPoolTaskExecutor=====
2020-07-21 11:58:47
121
原创 算法学习
一个目录:各类排序算法比较和应用场景快速排序:讲得不错:https://www.bilibili.com/video/BV11K4y1b7bC复杂度分析https://blog.youkuaiyun.com/nsjlive/article/details/102531375快速排序的思想不仅用于单纯的排序问题,对于很多查找类问题,快排算法能达到最小的时间复杂度,是最优解法之一。如:1.求一个数组里面最小的k个数; 2.求数组中出现次数超过一半的数快速排序——一次快排的应用(笔试&面.
2020-07-09 18:34:07
115
原创 读书笔记——深入理解Java虚拟机第三版(七章)
第七章 类加载机制Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。与那些在编译时需要进行连接的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略让Java语言进行提前编译会面临额外的困难,也会让类加载时稍微增加一些性能开销,但是却为Java应用提供了极高的扩展性和灵活性,Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动
2020-06-23 10:49:09
242
原创 读书笔记——深入分析javaWeb技术内幕(10章)
Session/cookie10.4分布式Session框架多个应用对应不同的服务器,就存在多个不同的cookie.cookie存储在浏览器里有几个问题:1.浏览器存储cookie大小数据有限制;2.大型应用中每个应用都自己管理cookie就变得混乱;3,安全问题跨域名共享cookie是必须将同一个sessionID作为cookie写到两个域名下。参考学习;4种分布式session解决方案Session机制详解及分布式中Session共...
2020-06-23 10:34:25
254
原创 读书笔记——深入分析javaWeb技术内幕(七章)
JVM为何选择基于栈的结构7.2.3执行引擎架构线程引擎执行过程,jvm方法调用栈第八章 jvm内存管理物理内存,虚拟内存内核空间,用户空间Jvm内存分配策略=============相关学习:第七章1.动态链接的目标二进制文件:windows:DLL, linux: SO库存;2.指令集架构实现:基于寄存器,基于栈第八章...
2020-06-21 15:20:15
182
原创 读书笔记——深入分析javaWeb技术内幕(一/二章)
一些记录:2.2磁盘IO工作机制2.2.1几种访问文件的方式一,标准文件访问方式;二,直接I/O方式;三,同步; 四,异步访问方式:五,内存映射方式
2020-06-17 16:37:14
233
转载 网络_sockets_ssl_ldaps
sun.security.ssl.SSLSocketFactoryImplsun.security.ssl.SSLSocketImpl遇到问题,想人为设置socket timeout的时间,timeout的异常是下图,用的是ldap 的ssl链接。设置com.sun.jndi.ldap.connect.timeout没有工作,查找到的相关资料不多,也没找到答案。有说jdk版本低于1.5不支...有篇:https://stackoverflow.com/questions/353054
2020-06-12 12:09:24
348
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅