软件开发中常见的十大系统瓶颈-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

2015-08-13 20:36:09 11798 2
在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总是开始分配内存)


原文译:http://highscalability.com/blog/ ... on-bottlenecks.html
取消 提交回答
全部回答(2)
  • 小柒2012
    2015-08-13 21:25:55
    回 1楼(ifconfig) 的帖子
    缓存一般都是成熟的框架、看开发者如何去使用了。
    0 0
  • ifconfig
    2015-08-13 21:23:02
    Re软件开发中常见的十大系统瓶颈
    感觉瓶颈是适配,缓存比较难
    0 0
添加回答
相关问答

2

回答

如何解决重装系统后要重装软件的问题?

2018-02-28 20:17:59 4245浏览量 回答数 2

4

回答

为什么软件默认安装在C盘

2018-02-28 21:14:06 1811浏览量 回答数 4

5

回答

万网虚拟主机是什么系统

2015-11-21 11:19:37 4164浏览量 回答数 5

1

回答

GNU系统工具链是什么呢?

2021-11-30 10:15:41 145浏览量 回答数 1

1

回答

软件虚拟化是什么?常见的软件虚拟机有哪些呢?

2021-12-04 19:37:57 391浏览量 回答数 1

1

回答

十大棋牌软件

2022-04-01 04:16:32 111浏览量 回答数 1

1

回答

十大棋牌软件

2022-04-01 04:55:33 173浏览量 回答数 1

1

回答

Linux 系统中,所有系统默认的软件都存储在哪个目录下呀?

2022-04-01 20:45:46 226浏览量 回答数 1

1

回答

常见的存储系统选项包括什么?

2022-07-26 16:44:37 225浏览量 回答数 1

1

回答

内核技术中跨云-边-端的只读文件系统EROFS的技术优势是什么?

2022-11-09 09:54:36 25浏览量 回答数 1
+关注
小柒2012
一个程序员,欢迎骚扰!!!
文章
问答
问答排行榜
最热
最新
相关电子书
更多
研发效能提升36计-开篇:互联网时代研发效能的挑战及应对之道
立即下载
中小企业如何实现在家研发软件
立即下载
组建增长团队,实践数据驱动
立即下载