系统性能瓶颈

在 Zen And The Art Of Scaling - A Koan And Epigram Approach 一文中, Russell Sullivan 提出一个很有趣的设想:一共有20种经典的瓶颈。这听起来就像只有20种基本的故事情节(20 basic story plots)那样让人怀疑。不过基于每个人不同的分类方式,这个说法或许是对的,但是在现实中,众所周知,瓶颈是无穷无尽的而且涉及方方面面。

一天, 来自 Terracotta 的 Aurelien Broszniowski 给我电邮了一份他心中的瓶颈列表,我们同时把我们的邮件抄送给了Russell, 他也给出了他的列表。而我也有我自己的想法。 所以,下面就是这几碗水煮成的一锅石头汤( http://en.wikipedia.org/wiki/Stone_soup, stone soup典故)

Russell 说要是年轻的时候就知道这些该多好啊,而对我来说则可以提供更多的思路。你的经验越多,处理过不同类型的项目,你就可以给这个列表增加更多的内容。因此当你在阅读这个列表时,或者是在整理自己的列表时,多年的丰富经验的积累以及遇到的一些小挫折,每一个故事都值得进行总结。

数据库
  • 工作中数据大小超过可用内存 RAM
  • 长短查询混合
  • 写-写 冲突
  • 大的联合查询占光内存
虚拟化
  • 共享 HDD 存储,磁盘寻道挂起
  • 云平台中的网络 I/O 波动
编程
  • 线程:死锁、相对于事件驱动来说过于重量级、调试、线程数与性能比非线性
  • 事件驱动编程:回调的复杂性、函数调用中如何保存状态(how-to-store-state-in-function-calls)
  • 缺少profile工具、缺少trace工具、缺少日志工具
  • 单点故障、横向不可扩展
  • 有状态的应用
  • 搓设计:一台机器上能跑,几个用户也能跑,几个月后,几年后,尼玛,发现扛不住了,整个架构需要重写。
  • 算法复杂度
  • 依赖于诸如DNS查找等比较搞人的外部组件
  • 栈空间
磁盘
  • 本地磁盘存取
  • 随机磁盘读写 -> 磁盘寻道
  • 磁盘碎片化
  • 写入超过SSD容量的数据导致SSD硬盘性能降低
操作系统
  • 内核缓冲刷入磁盘,填充linux缓冲区缓存
  • TCP缓冲区过小
  • 文件描述符限制
  • 功率分配
缓存
  • 不使用memcached
  • HTTP中,header,etags,不压缩(headers, etags, not gzipping)
  • 没有充分使用浏览器缓存功能
  • 字节码缓存(如PHP)
  • L1/L2缓存,这是个很大的瓶颈。把频繁使用的数据保持在L1/L2中。设计到的方面很多:网络数据压缩后再发送,基于列压缩的DB中不解压直接计算等等。有TLB友好的算法。最重要的是牢固掌握以下基础知识:多核CPU、L1/L2,共享L3,NUMA内存,CPU、内存之间的数据传输带宽延迟,磁盘页缓存,脏页,TCP从CPU到DRAM到网卡的流程。
CPU
  • CPU 过载
  • 上下文切换 -> 一个内核上跑了太多的线程,linux调度对于应用来说很不友好, 太多的系统调用, 等等...
  • IO 等待 -> 所有的CPU都挂起等待比较慢的IO
  • CPU 缓存: 缓存数据是一个为了平衡不同实例有不同的值和繁重的同步缓存数据保持一致,而精心设计的一个进程。
  • 背板吞吐量
网络
  • 网卡的最大输出带宽,IRQ达到饱和状态,软件中断占用了100%的CPU
  • DNS查找
  • 丢包
  • 网络路由瞎指挥
  • 网络磁盘访问
  • 共享SAN(Storage Area Network)
  • 服务器失败 -> 服务器无响应
过程
  • 测试时间 Testing time
  • 开发时间 Development time
  • 团队人数 Team size
  • 预算 Budget
  • 代码缺陷 Code debt
内存
  • 内存溢出 -> 杀进程,进入 swap ,越来越慢
  • 内存溢出导致磁盘频繁读写(swap相关)
  • 内存库开销
  • 内存碎片
  • Java 需要垃圾收集导致程序暂停
  • C 语言的 malloc 无法分配
系统性能瓶颈与吞吐量分析 本博客围绕系统性能分析展开,探讨了多个性能关键点,包括瓶颈识别、吞吐量计算、可用性评估以及排队论在实际场景中的应用。通过分析各组件的数据速率,确定服务器磁盘为系统瓶颈;介绍了PDQ建模方法用于求解M/M/1队列;展示了如何计算平均事务并发数、顾客停留时间等指标;并提供了Perl代码实现网络请求的示例。内容适用于系统调优与性能工程实践。 阅读详情

相关推荐

AI系统性能瓶颈分析与优化实战指南

在深度学习系统部署过程中,性能优化是确保AI模型高效运行的关键环节。从技术原理来看,现代AI系统依赖GPU/TPU等异构计算架构,其性能特征受计算图结构、内存访问模式和硬件资源调度等多因素影响。工程实践中,开发者需要掌握计算资源利用率分析、内存带宽优化和框架开销诊断等核心技能,这些技术能有效解决推理延迟飙升、显存碎片化等典型性能问题。通过系统化的六步分析法,包括建立性能基准、定位计算热点、优化数据流水线等步骤,可以显著提升AI系统吞吐量并降低延迟。特别是在推荐系统、计算机视觉等实时性要求高的场景中,合理的性

weixin_29531177的博客 240

限制系统性能瓶颈的因素、衡量系统性能的指标

影响系统性能的主要因素

在路上 1223

系统性能瓶颈排查及性能优化实战

从常见的应用服务器来说,比如Tomcat,如果堆内存设置比较小,就会造成新生代的Eden区频繁的进行Young GC,老年代的Full GC也回收较频繁,那么对TPS也是有一定影响的,因为垃圾回收时通常会暂停所有线程的工作。高并发情况下,如果请求数据需要写入数据库,且需要写入多个表的时候,如果数据库的最大连接数不够,或者写入数据的SQL没有索引没有绑定变量,抑或没有主从分离、读写分离等,就会导致数据库事务处理过慢,影响到TPS。性能测试中,对服务端的指标监控也是很重要的一个环节。让开发修改代码即可。

悦分享 1091

Linux系统瓶颈分析(经典)

Linux系统瓶颈分析(经典) 文章来源:http://wenku.baidu.com/view/ccce2912f18583d0496459f8.html 1.0 性能监控介绍 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,多数管理员相信看一些相关的"cook book"就 可以实现性能优化,通常通过对内核的一些配置是可以简单的解决问题,但并不适合每个环境,性能优化其实

Cheers Li 软件测试博客 7176

使用nvm离线安装、管理node多版本以及配置环境变量(亲测)

使用nvm离线安装、管理node多版本以及配置环境变量(亲测)

JMHJAVA的专栏 1338

1688店铺所有商品API接口(整店商品查询API接口)

1688店铺所有商品API接口、1688店铺列表API接口,1688店铺API接口,1688店铺查询商品API接口,1688店铺商品API接口,1688店铺详情接口,1688商品API接口

tbprice的博客 1569

系统瓶颈优化参考

1、cpu问题 考虑使用更高的cpu代替当前cpu。 对于多cpu,考虑cpu之间的负载分配 考虑在其他体系上设计系统,当前值。 2、内存和高速缓存 内存的优化包括操作系统,数据库,应用程序的内存优化。 过多的分页与交换可能降低系统的性能。 内存分配也是影响系统性能的主要原因。 保证保留列表具有较大的邻接内存块。 调整数据块缓冲区大小(用数据块的个数表...

weixin_34174105的博客 299

Shader Graph入门

Shader Graph 简介

zaizai1007的博客 1万+

系统性能瓶颈会存在那几个方面?如何分析

在进行压测时候,随着压力的增加,当tps达到了峰值,不能再增加,说明系统存在瓶颈了。 1.首先考虑是否为内存的瓶颈,如果为内存的瓶颈,可以查看到此时应用使用的内存达到了它设置的上限,会不停gc(内存溢出)。当内存不足时,jvm内存回收会频繁执行。 分析内存可以查看gc日志,jstat之类的命令(http://guafei.iteye.com/blog/1815222)学习java对象回收...

weixin_30758821的博客 911

STM32F103C8T6与OV7670摄像头在TFT屏上的实时数字识别系统实现

本文详细介绍了基于STM32F103C8T6单片机和OV7670摄像头实现实时数字识别系统的全过程。系统通过图像采集、预处理、二值化和模板匹配算法,在TFT屏上实时显示识别结果,并针对资源受限的单片机环境提供了内存与性能优化策略,适用于智能家居、工业仪表读数等低成本嵌入式视觉应用场景。

open4的博客 278

图形推理2-四大类六提示

图形推理笔记2

小y的学习笔记 6746

常见性能瓶颈解析及调优方案

1、TPS波动较大 原因解析:出现TPS波动较大问题的原因一般有网络波动、其他服务资源竞争以及垃圾回收问题这三种。 性能测试环境一般都是在内网或者压测机和服务在同一网段,可通过监控网络的出入流量来排查; 其他服务资源竞争也可能造成这一问题,可以通过Top命令或服务梳理方式来排查在压测时是否有其他服务运行导致资源竞争; 垃圾回收问题相对来说是最常见的导致TPS波动的一种原因,可以通过GC监...

那片天空!那片海! 1967

前言:为什么要学习爬虫和逆向,该如何学习?

学习爬虫和逆向技术是当今数字化时代的重要技能,尤其在数据分析、安全研究、自动化工具开发等领域有广泛应用。以下是详细的学习理由、路径和方法:

数据知道的博客 1万+

系统性能瓶颈的初步判断

系统性能如何,有没有瓶颈,如何判断需要充分的世间,根据前人和自己的实际做个简单的判断.这次是用纯命令来分析.(,iostat,vmstat,sar) 1 iostat 磁盘IO 统计 cpu查看 iostat -c 1 3 `注意%iowait并不能反应磁盘瓶颈,%iowait = (cpu idle time)/(all cpu time),现在越是高速CPU是不是值...

优快云1887的博客 2543

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

系统性能瓶颈定位浅谈

前两天看到一个关于系统性能优化的一个帖子,感觉说的比较在理,结合自己的经历和一些资料,总结了一下,记录在此。 系统的性能优化可以说是一个比较大的开放性话题,可以说的有很多。本文就试着介绍下性能瓶颈的定位的一些工具,这些工具一般都是linux安装基本就有的,而且不需要root权限的(主要是考虑到可以让大多数人都可以使用)。 一、关于系统性能的两个基本概念 系统的性能问题,有两个比较重要的指标,...

iteye_4524的博客 575

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Linux 从基础到进阶】系统性能瓶颈分析与排查

系统性能瓶颈是阻碍系统高效运行的主要障碍,通常表现为系统响应变慢、资源使用率过高等现象。性能瓶颈的分析与排查需要全面了解系统资源的使用情况,找到导致性能下降的根本原因,并采取相应的优化措施。本文将重点讨论如何对Linux系统进行性能瓶颈的分析与排查。

weixin_39372311的博客 1024

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

系统性能瓶颈排查

当系统出现性能瓶颈时,需通过系统化的方法进行排查。首先,通过资源监控工具(如 top、iostat、nload 等)分析CPU、内存、磁盘IO和网络的使用情况,对比历史数据判断是否为突发流量或资源泄漏。其次,在应用层进行深度排查,包括请求链路分析、线程与阻塞分析、代码热点分析等,使用工具如 jstack、JProfiler 等定位问题。数据库与存储层排查则关注慢查询优化、连接池配置和锁竞争问题。此外,检查缓存命中率和外部服务依赖,确保缓存策略合理并设置降级策略。网络与架构优化方面,排查网络延迟并优化负载均衡

红血哥 1158

如何测试出系统性能的瓶颈在那里?

要测试系统性能瓶颈的位置,可以使用以下步骤: 收集数据 使用性能测试工具来收集系统的性能数据,包括响应时间、吞吐量和并发用户数等。 分析数据 对收集到的数据进行分析,寻找可能存在的瓶颈,如CPU利用率、内存使用率、网络延迟等。也可以使用一些监控工具来监测系统的各项指标。 进行测试 对瓶颈位置进行单独的测试。例如,如果怀疑网络延迟是系统瓶颈,可以通过增加网络流量、使用不同的网络连接等方式来进行测试。 定位瓶颈 根据测试结果定位系统瓶颈,可能需要进行多轮测试才能确定性能瓶颈的位置。 优化改进

862

如何快速定位并解决 Linux 系统性能瓶颈:终极全攻略

诊断和解决 Linux 系统中的性能瓶颈是确保系统高效运行的关键步骤。

探索技术世界的奥秘 分享编程经验与创新见解 通过深入浅出的文章,助您在技术领域不断成长,让知识成为您前行的力量! 1509

影响系统性能的20个瓶颈

影响系统性能的20个瓶颈Zen And The Art Of Scaling - A Koan And Epigram Approach一文中,Russell Sullivan提出一个很有趣的设想:一共有20种经典的瓶颈。这听起来就像只有20种基本的故事情节(20 basic story plots)那样让人怀疑。不过基于每个人不同的分类方式,这个说法或许是对...

weixin_34128501的博客 209

系统性能瓶颈分析三定律

分布式系统性能优化不应简单依赖资源扩容。三大定律揭示了性能瓶颈的结构性本质:利特尔定律指出延迟微小增加会引发排队剧增;阿姆达尔定律表明串行处理环节构成性能天花板;通用可扩展性定律说明高并发下资源竞争和一致性开销会导致扩容效果递减甚至负增长。有效解决方案应从重构系统结构入手:减少串行点、降低延迟、优化竞争策略、采用最终一致性等。理解这些底层规律,才能在高并发场景下实现真正的弹性扩展。

IT从业者 594

怎么查看linux网络瓶颈,查看linux系统性能瓶颈脚本

2017-09-20查看linux系统性能瓶颈脚本脚本目的:分析系统资源性能瓶颈脚本功能:1、查看CPU利用率与负载(top、vmstat、sar)2、查看磁盘、Inode利用率与I/O负载(df、iostat、iotop、sar、dstat)3、查看内存利用率(free、vmstat)4、查看TCP连接状态(netstat、ss)5、查看CPU与内存占用最高的10个进程(top、ps)6、查看...

weixin_39618730的博客 961

提示系统性能瓶颈:架构师如何识别“模型瓶颈”与“prompt瓶颈”?

你是否遇到过这样的场景?花了 weeks 调优的LLM客服机器人,上线后响应时间高达10秒,用户吐槽“比人工还慢”;用GPT-3.5做法律文书解析,准确率始终卡在70%,换了10版Prompt还是没提升;月度API账单突然翻倍,排查发现每请求token数比上周多了3倍,但没人改过程序。模型瓶颈(Model Bottleneck)和Prompt瓶颈前者是模型本身的能力或性能限制,后者是Prompt设计导致的“沟通失效”——两者症状相似,但优化方向完全相反。

操作系统内核探秘的博客 835

Linux系统性能瓶颈分析

▶ CPU使用率【CPU Utilization】 这可能是最直接的指标了,它表示每个处理器的整体使用率。在IBM System x架构中,如果在持续一段时间里CPU使用率超过80%,就可能预示着CPU出现了瓶颈。 ▶ 用户时间【User Time】 表示用户进程所花费的CPU百...

chuojianpeng9484的博客 291
上一篇: easyui视频
下一篇: springmvc注解
YB程序员
博客等级 码龄15年 31粉丝 514原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值