列举一些常见的系统系能瓶颈 Common Bottlenecks
http://www.nowamagic.net/librarys/veda/detail/2408在 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 说要是年轻的时候就知道这些该多好啊,而对我来说则可以提供更多的思路。你的经验越多,处理过不同类型的项目,你就可以给这个列表增加更多的内容。因此当你在阅读这个列表时,或者是在整理自己的列表时,多年的丰富经验的积累以及遇到的一些小挫折,每一个故事都值得进行总结。
.jpg)
数据库
- 工作中数据大小超过可用内存 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 无法分配
如果你有更多的瓶颈见解与心得,欢迎补充。
列举一些常见的系统系能瓶颈 Common Bottlenecks的更多相关文章
- 如何迅速分析出系统CPU的瓶颈在哪里?
内容出自极客时间专栏<Linux 性能优化实战> CPU 的性能指标那么多,CPU 性能分析工具一抓一大把,换成实际的工作场景,该观察什么指标.选择哪个性能工具呢? 不要担心,今天我就以多 ...
- 列举一些常见的Python HTTP服务器
要使 Python 写的程序能在 Web 上被访问,还需要搭建一个支持 Python 的 HTTP 服务器.下面列举一些常见的 Python HTTP 服务器,以及它们目前的大致发展情况,以便用户的对 ...
- 性能分析(6)- 如何迅速分析出系统 CPU 的瓶颈在哪里
性能分析小案例系列,可以通过下面链接查看哦 https://www.cnblogs.com/poloyy/category/1814570.html 前言 在做性能测试时,我们会需要对 Linux 系 ...
- 常见linux系统中RPM包的通用命名规则
本文重点说一下在常见的linux系统中,RPM包通用的命名规则. RPM包的一般格式为:name-version-arch.rpmname-version-arch.src.rpm 例:httpd-2 ...
- java 获取当前系统系时间
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 SimpleDateFo ...
- SQL 中常见的系统存储过程
-- 来源于网络 -- 更详细的介结参考联机帮助文档 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_logi ...
- [Linux发行版] 常见Linux系统下载
本专题页汇总最受欢迎的Linux发行版基本介绍和下载地址,如果您是一位刚接触Linux的新手,这里的介绍可能对您有所帮助,如果您是以为Linux使用前辈,也可以在评论处留下您宝贵意见和经验,以便让更多 ...
- [Linux发行版] 常见Linux系统下载(转)
本专题页汇总最受欢迎的Linux发行版基本介绍和下载地址,如果您是一位刚接触Linux的新手,这里的介绍可能对您有所帮助,如果您是以为Linux使用前辈,也可以在评论处留下您宝贵意见和经验,以便让更多 ...
- 1——PHP常见的系统常量
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
随机推荐
- 类方法load和initialize的区别
1.+load方法当类或分类添加到object-c runtime时被调用,子类的+load方法会在它所有父类的+load方法之后执行,而分类的+load方法会在它的主类的+load方法之后执行.但不 ...
- mysql 绿色版安装
1. 下载MySql5.6.10GA解压缩版,这就不多说也不上图了,下不到或者下好之后不知道如何解压的接下去的文章也没什么好多看的. 2. 解压好之后进入根目录是这样个情况(本人使用的是MySql5. ...
- 阻止a标签跳转
一.在html中 1. <a href="javascript:;"></a> 2. <a href="###">&l ...
- django 获取 POST 请求值的几种方法(转)
转载请注明出处:http://hi.baidu.com/leejun_2005/blog/item/9a37a22238f35c5bac34de54.html from:http://stackove ...
- ELM320 OBD(PWM) to RS232 Interpreter
http://elmelectronics.com/DSheets/ELM320DS.pdf
- Spring JdbcTemplate batchUpdate() 实例
在某些情况下,可能需要将一批记录插入到数据库中.如果你对每条记录调用一个插件的方法,SQL语句将被重复编译,造成系统缓慢进行. 在上述情况下,你可以使用 JdbcTemplate BATCHUPDAT ...
- ExtJs4.0日期控件只显示年月按年月格式会跳月的解决办法
如果是Ext.form.panel的话,只要设置一下属性就可以.如下代码: { text : '期间', width : 80, sortable : true, dataIndex : 'accou ...
- android mount win2008 nfs
win2008下添加NFS 安卓下运行(需要安装busybox 还有root) busybox mount -t nfs 192.168.1.2:/NFS /nfs -o nolock
- jquery点击回到页面顶部方法
1.代码实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Flink及主流流框架spark,storm比较
干货 | Flink及主流流框架比较 IT刊 百家号17-05-2220:16 引言 随着大数据时代的来临,大数据产品层出不穷.我们最近也对一款业内非常火的大数据产品 - Apache Flink做了 ...