软件开发中常见的十大系统瓶颈

PHP 对接建行生活订单推送接口 php对接建行订单推送 阅读详情

摘要:在平时开发工作中,你可能在开发的各方面遭遇瓶颈,比如性能、系统等。你有对它们进行过归纳吗?不妨来看看本文对这些系统瓶颈的归类吧!

在Zen And The Art Of Scaling - A Koan And Epigram Approach中,Russell Sullivan提出了一个非常有趣的总结:软件开发常见的20个传统的系统瓶颈,这听起来像是说有20个故事情节,并且依赖于你如何策划这些故事,或许都是真的,但唯有实践才知道它们带给我们的酸甜苦辣。

有一天,Aurelien Broszniowski给我发了一份电子邮件,把这些瓶颈用列表的方式展示出来。在接下来的交谈过程中,我又把该列表抄送给了Russell,Russell对此列表进行了整理。

Russell说:“我真希望在年轻时看到这样的一份列表”。伴随着经验的增长、项目的增多、解决各种不同类型的问题和不断总结各种经验教训,你会在这份列表上添加更多的东西。所以,当你在阅读该份列表时就像是在回顾一个个故事片段。

数据库

  • 工作任务内存超过可用的RAM内存
  • 长/短查询
  • 写入冲突
  • 大连接(join)占用内存

虚拟化

  • 共享一个HDD、磁盘寻死(disk seek death)
  • 在云端网络I/O波动

编程

  • 线程:死锁、调试、非线性扩展等
  • 事件驱动编程:callback()过于复杂、如何在函数调用中存储有状态等
  • 缺乏调优、跟踪、日志等
  • 单模块不可扩展、单点故障(SPOF:Single Point Of Failure)、非横向扩展等
  • 有状态应用程序
  • 设计问题:开发的应用程序只在自己的机器行运行正常,或者只是在几个人测试的时候正常(没有经历压力测试)。
  • 算法过于复杂
  • 相关服务,例如DNS查找以及其他可能屏蔽的服务
  • 堆栈空间

磁盘

  • 访问本地磁盘
  • 随机访问磁盘I/O
  • 磁盘碎片
  • 当SSD写入的数据大于SSD容量时,性能会下降

OS

  • Fsync饱和,Linux缓冲区填塞(Fsync flushing, linux buffer cache filling up)
  • TCP缓冲区太小
  • 文件描述符限制
  • 功率分配(Power budget)

缓存

  • 没使用memcached(数据库崩溃)
  • HTTP中:headers、etags、没有使用gzip压缩等。
  • 没有充分利用浏览器缓存
  • 字节码缓存(如PHP)
  • L1/L2缓存:这是个令人头疼的大瓶颈。把关键并且经常访问的数据存储在L1/L2中。这涉及到很多:snappy网络I/O,列数据库直接在压缩数据上运行算法等。利用一些技术不销毁你的TLB。最重要的思想是紧紧的抓住计算机的体系结构,涉及多核CPU,L1/L2,共享的L3,NUMA RAM,从DRAM到芯片数据传输带宽/延迟,DRAM缓存的DiskPages,DirtyPages,流经CPU<->DRAM<->NIC的TCP包。

CPU

  • CPU过载
  • 内容切换—>单核上开启的线程过多、Linux调度器、系统调用太多等
  • IO等待—>所有的CPU在同速等待
  • CPU缓存:缓存数据是一个细粒度进程,为了在多个实例与不同的值数据之间找到正确的平衡,来保持缓存数据的一致性和繁重同步。
  • 底板吞吐量(Backplane throughput)

网络

  • NIC刷爆、IRQ饱和、软中断占用掉了100%CPU
  • DNS查询
  • 数据包丢失
  • 网络中存在预期外的路由
  • 访问网络磁盘
  • 共享SAN
  • 服务器故障—>无法从服务处得到响应

进程

  • 测试时间
  • 开发时间
  • 团队规模
  • 预算
  • 代码债务

内存

  • 内存不足—>杀死进程,切换到swap,挂起
  • 内存不足导致磁盘交换(与swap相关)
  • 记忆库开销过大(Memory library overhead)
  • 内存分片(在Java中需要会因为内存回收而停顿;在C中,malloc总是开始分配内存)

更多精彩内容,请关注新浪微博@优快云研发频道

来自:Big List Of 20 Common Bottlenecks


手把手教你用ADS优化肖特基二极管检波电路(附RC参数避坑指南) 本文详细介绍了如何使用ADS软件优化肖特基二极管检波电路,包括RC参数设置、常见失真问题分析与解决方案。通过实战案例和参数优化技巧,帮助射频工程师避免设计陷阱,提升电路性能。特别附有RC参数避坑指南,适用于调幅解调、功率检测等应用场景。 阅读详情

相关推荐

MCGS触摸屏数据记录与U盘导出配置全解析

在工业自动化现场,数据记录是设备运行状态分析与故障追溯的基础。HMI触摸屏作为人机交互核心,不仅承担实时监控任务,还负责过程数据的存储与导出。理解数据采集周期、存盘机制与存储介质的匹配原理,能帮助工程师高效配置数据记录功能。合理运用定时存盘、存盘组与U盘导出,可支撑设备趋势分析、报表生成及事故排查。本文以MCGS触摸屏为例,详解数据记录的完整组态流程,并汇总常见配置陷阱与排查思路,为现场调试与长期运维提供可落地的技术参考。

weixin_34253126的博客 459

系统开发中的问题解决与改进计划

系统开发中的问题解决与改进计划

m0_59546168的博客 2824

一文掌握python图形界面开发PyQt6--(一)基本操作、控件、信号与槽、常用控件、布局管理、事件处理、文件对话框

一文掌握python图形界面开发PyQt6--(一)基本操作、控件、信号与槽、常用控件、布局管理、事件处理、文件对话框

qq_38120851的博客 4046

软件开发中常见的十大系统瓶颈[转载]

在Zen And The Art Of Scaling - A Koan And Epigram Approach中,Russell Sullivan提出了一个非常有趣的总结:软件开发常见的20个传统的系统瓶颈,这听起来像是说有20个故事情节,并且依赖于你如何策划这些故事,或许都是真的,但唯有实践才知道它们带给我们的酸甜苦辣。 有一天,Aurelien Broszniowski给我发了一

星火燎猿 2555

新手避坑指南:用Silvaco Atlas搞定GaN HEMT电热仿真的完整流程(附代码解读)

本文详细介绍了使用Silvaco Atlas进行GaN HEMT电热特性仿真的完整流程,特别针对新手常见问题提供避坑指南。从软件环境配置、结构定义、网格划分到物理模型设置,逐步解析关键步骤,并附有代码解读和调试技巧,帮助读者快速掌握GaN器件仿真的核心技术。

weixin_29215815的博客 597

Amesim基础篇-热仿真常用模型库-Thermal Hydraulic /Resistance

流体库、管路库在热管理中是必备模块,如动力电池液冷循环系统均需要Thermal Hydraulic /Resistance库的元件建模。

2201_75375391的博客 5666

什么是系统瓶颈?

瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。 严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极...

weixin_30535913的博客 1214

【第六届起重机创意大赛国一作品——资料分享】

文章目录前言一、比赛内容分析二、确定方案与作品模型1.方案简图2.作品模型三、电控部分控制思路单片机选择与资源分配拓展板的设计接线与走线代码分享总结

qq_19308801的博客 7781

[学习笔记]什么是系统瓶颈

这个问题思路可以从CPU使用率刚好达到100%,内存耗尽开始想,但是这是比较少见的现象。 测试就要联想到:系统是不是可以满足客户的需求 在用户极限使用系统的情况下,系统是不是能正常工作,如果正常,那就可以认为这个系统没有瓶颈,或者瓶颈不会影响用户工作。 所以可以自己总结一下系统瓶颈的概念: 系统瓶颈主要是看软件系统在某一方面或者是多个方面的能力是否满足客户特定的业务要求 总结测试系统瓶颈的目的: 1. 发现系统表面的瓶颈 模拟用户操作去极限的使用系统,对发现的问题进行解决(这也是性能测试的

qq_51148692的博客 1153

26、机器学习模型的成员推断攻击与隐私保护

本文探讨了机器学习模型面临的成员推断攻击及其对隐私的潜在威胁。通过使用CIFAR-10数据集,详细介绍了如何利用影子模型和攻击模型推断特定数据点是否属于模型的训练集。实验表明,即使无法直接访问模型参数和原始数据,攻击者仍能以高于随机猜测的概率进行推断,从而构成隐私风险。此外,文章还分析了实验的关键技术点,并提出了多种隐私保护建议,包括数据脱敏、差分隐私、模型正则化等方法。

coffee的博客 123

手把手教你学simulink(95.1)--PID控制实例:基于Simulink的PID控制温度控制系统建模与仿真

温度控制是工业自动化、家用电器、医疗设备以及航空航天等领域中常见的控制问题。通过精确的温度控制,可以提高生产效率、降低能耗并确保产品质量。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于各种温度控制系统。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的温度控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。

MHD0815的博客 793

软件开发部门工作存在的问题及解决方案

软件开发部门可能存在各种各样的问题,其中一些常见的问题包括: 项目管理问题:在项目开发过程中,可能存在项目进度滞后、预算超支、人员缺失等问题。解决方案可以采用灵活的项目管理方法,如敏捷开发,提高项目的适应性和灵活性。 需求问题:在需求分析阶段,客户和开发团队可能存在沟通障碍,导致需求不明确或变更频繁。解决方案可以使用用户故事地图、原型设计等工具来帮助客户和开发团队更好地沟通和理解需求。 技术...

weixin_35756690的博客 2298

使用菱FX5U系列PLC实现以太网通信的具体方法示例

接下来,我们将创建一个简单的CPU通信功能,以实现与其他设备的以太网通信。在上述代码中,我们首先设置访问号,然后创建一个数据读取命令(M_READ)和一个数据写入命令(M_WRITE)。此外,在实际应用中,您还需要确保PLC和其他设备之间的网络连接正常,并且遵循相应的通信协议。在上述代码中,我们执行了数据读取命令,并将接收到的响应存储在M_RESPONSE变量中。通过简单CPU通信功能,菱FX5U系列PLC可以实现与其他设备的以太网通信。我们将提供相应的源代码和详细的说明,以帮助您轻松实现这一功能。

DevCyberX的博客 1526

软件开发中常见的十大系统瓶颈

软件开发中常见的十大系统瓶颈 发表于2012-11-08 08:25| 8897次阅读| 来源优快云编译| 30 条评论| 作者张红月 架构软件开发 摘要:在平时开发工作中,你可能在开发的各方面遭遇瓶颈,比如性能、系统等。你有对它们进行过归纳吗?不妨来看看本文对这些系统瓶颈的归类吧! 在Zen And The Art Of Scaling - A Koan And

zhuimengzh的专栏 915

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: Linux动态链接库的创建与使用
下一篇: 历史文化知识
wind19
博客等级 码龄23年 477粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值