常见的10种“瓶颈”

标签: 常见 瓶颈 | 发表时间:2013-02-22 15:36 | 作者:ttyttytty12
出处:http://blog.csdn.net
1 数据库
Working size超过可用内存
Working Size怎么理解?肯定不是指数据库的大小,应该是在保证业务指标——响应时间、QPS的情况下,数据库使用的内存大小。其超过可用内存后的直接影响就是系统开始使用“swap”,从而大大降低DB的性能。所以,DB服务器要有充足的内存。
长查询和短查询
指运行时间很长和很短的查询。运行时间很长的查询,要是么很消耗内存、CPU,比如联合查询,要么是很消耗磁盘I/O,比如没有用到索引的“遍历”——这应该算是“事故”。长查询对“DB性能”的影响是显而易见的。而短查询呢?
写冲突(需要用锁的场景)
写冲突的场景,通常会遇到“锁”,如MyISA的“表锁”,与InnoDB的“行锁”,当遇上“锁”时,只能有一个“用户”在写,其他用户均需要等待。当有大量的冲突时,用户需要等待的时间就越长,“锁”机制会导致CPU的有效利用率大大下降——花在“获取锁”上的CPU时间变多,从而导致DB可用的有效CPU时间变少,性能下降。
大量的Join操作消耗内存
Join操作本身比较消耗内存和CPU,尽可能不用或少用。


2 虚拟化
共享磁盘,磁盘随机读严重
虚拟化场景,使用共享磁盘(HDD),磁盘会成为瓶颈。磁盘差不多是计算机上最慢的设备了。随机I/O能力极差。
网络I/O波动
因为虚拟化场景同一台物理机上的多个VM之间的网络是共享的,会互相影响。


3 程序
线程:死锁,与“事件驱动型”(方案)相比过重,debug,非线性扩展,等等
事件驱动编程:回调的复杂度,如何保存函数状态,等等
缺乏“profiling”、跟踪、日志机制。
耦合严重,单独故障,不可水平扩展,等等
有状态的应用(不易水平扩展)
糟糕的设计:开发都开发了一个程序,在自己的电脑上运行良好;到了生产环境,对于两三个用户,也运行良好。等到数月、数年过后,用户量上来以后,程序不能运行了,需要重构、重写。
算法复杂性
依赖其他服务,比如DNS查询以及其它,你可会被阻塞。
栈空间

4 磁盘
本地磁盘访问
随机磁盘I/O(引发大量磁盘寻道)
磁盘碎片(增加寻道机会和时间)
当写入数据量超过SSD空间量以后,SSD性能的下降

5 操作系统
Fsync flushing, linux buffer cache filling up
TCP Buffer过小
文件句柄限制
功率分配(CPU节能?)

6 缓存
不使用Memcached(数据库前端)
HTTP:headers,etags,不压缩,等等
不充分利用浏览器的缓存
字节码缓存(比如PHP的APC)
处理器的L1/L2缓存:这是一个重要的“瓶颈”。保持重要的热数据在L1/L2缓存中。这个关系到方方面面太广,

7 处理器
CPU超载
上下文切换->一个核上太多线程,这可能是因为“坏运气”或者是Linux调度器;太多系统调用,等等
I/O等待->所有CPU以相同的速度在等待(同时等待)
CPU缓存:未完……
主板能力(其它限制CPU性能的因素)

8 网络
网卡最大带宽,IRQ饱和,软中断用光CPU资源
DNS查询
丢包
意外路由
网络磁盘访问(比如NFS, drbd)
共享SANs
服务故障->服务不响应

9 进程
测试时间
程序调试时间
团队大小
预算
代码“欠债”

10 内存
OOM->杀进程,使用交换甚至导致死机
OOM导致磁盘超负荷(因为swap)
内存管理库极限
内存碎片
Java中会导致GC停顿,速度变慢
C中,导致malloc()分配内存变慢
作者:ttyttytty12 发表于2013-2-22 15:36:50 原文链接
阅读:0 评论:0 查看评论

相关 [常见 瓶颈] 推荐:

常见的10种“瓶颈”

- - CSDN博客推荐文章
Working size超过可用内存. Working Size怎么理解. 肯定不是指数据库的大小,应该是在保证业务指标——响应时间、QPS的情况下,数据库使用的内存大小. 其超过可用内存后的直接影响就是系统开始使用“swap”,从而大大降低DB的性能. 所以,DB服务器要有充足的内存. 运行时间很长的查询,要是么很消耗内存、CPU,比如联合查询,要么是很消耗磁盘I/O,比如没有用到索引的“遍历”——这应该算是“事故”.

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

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

我的瓶颈在哪里?

- 弛 - 博客园-首页原创精华区
   最近在处理一些比较复杂的问题,在解决这个问题的同时,我深刻的体会到,问题的本身,对我来讲,并不是最重要或者最紧要的(当我解决掉一个问题,其结果也只是问题不存在了). 我认为是我的思维能力或者思维方式,用最优质的方法去解决问题,这才是王道. 在平平淡淡的生活中,我们会碰到大量的问题,有的问题 凭直觉就能解决,如果碰到稍微复杂的问题,我们就不知道从什么地方入手,也就是我们找不到解决问题的方法,或者叫切入点.

10招教你打破摄影瓶颈

- mjxian - 摄影之友
为陷入瓶颈期摄影师准备的可行建议. 作为一位作家,我深刻地理解以下这种感受 – 僵坐在电脑前,盯着闪烁的鼠标和空无一字的Word文档,这一刻灵感缺席,只能任凭恐惧和虚无肆虐. 纵有成千上万的思绪和故事就在齿边,却就是没有办法将它们形成文字. 当我拍照时,上述的同样场景也往往发生在我身上. 所以……你该去做些什么才能走出困境并打破摄影瓶颈.

寻找Linux单机负载瓶颈

- - 大CC
服务器性能上不去,是哪里出了问题?IO还是CPU. 只有找到瓶颈点,才能对症下药;. 如何寻找Linux单机负载瓶颈,遵循的原则是不要推测,我们要通过测量的数据说话;. 1.查看平均负载(top/uptime命令). 2.确认CPU、IO有无瓶颈;(使用 sar vmstat). 3.CPU负载过高时寻找流程:.

定位IO瓶颈的一些方法

- - Linux - 操作系统 - ITeye博客
IO瓶颈往往是我们可能会忽略的地方(我们常会看top、free、netstat等等,但经常会忽略IO的负载情况),今天给大家详细分享一下如何确认一台服务器的IO负载是否到达了瓶颈,以及可能优化、定位的点. 先来看一台典型的IO密集型服务器的cpu统计图:. 可以看到,CPU总使用率不高,平均1.3%,max到5.6%,虽然大部分都耗在了iowait上,但才百分之五左右,应该还没到瓶颈吧.

中国程序员的收入瓶颈

- - ITeye博客
程序员的收入是广受关注的问题,很多人从业3~5年之后就会遇到这个收入瓶颈. 尽管物价不断上涨,程序员尤其是初、中级程序员的收入不升反降. 即使上次在某个文章中看到有中国第一程序员之称的某位,月薪也只有3万,尽管这个数字已经很高了,但这个“中国第一”,也只有众多小型软件企业总监级别的收入而已. 为什么这么高水平的技术人员在公司中的位置仍然显得与日俱降.

用 Wireshark 分析 TCP 吞吐瓶颈

- - 卡瓦邦噶!
Debug 网络质量的时候,我们一般会关注两个因素:延迟和吞吐量(带宽). 延迟比较好验证,Ping 一下或者 mtr 一下就能看出来. 这篇文章分享一个 debug 吞吐量的办法. 看重吞吐量的场景一般是所谓的长肥管道(Long Fat Networks, LFN, rfc7323). 吞吐量没有达到网络的上限,主要可能受 3 个方面的影响:.

为解决扩展性瓶颈雅虎计划重构Hadoop-MapReduce

- 阿贡 - ITeye资讯频道
最近雅虎开发者博客发了一篇介绍Hadoop重构计划的文章. 因为他们发现当集群的规模达到4000台机器的时候,Hadoop遭遇到扩展性的瓶颈,目前他们正准备开始对Hadoop进行重构. Mapreduce面临的瓶颈. 从集群大小和工作量中观察到的趋势是,MapReduce的JobTracker需要彻底改革,以解决其可扩展性,内存消耗,线程模型,可靠性和性能的几个缺陷.

好乐买总裁李树斌:10亿,突破技术瓶颈

- ItTalks - ec.iresearch.cn
2011年10月18日,中国电子商务大会暨电子商务博览会在北京国家会议中心隆重召开,本次会议以“电子商务:城市影响力经济新动力”为主题,以论坛会议和展览的形式展示中国电子商务在经过十年磨砺后,以科技创新为核心,以产业链融合为支撑,以开放的心态发展电子商务的丰硕成果.   论坛会议针对2011年电子商务行业新模式及新热点进行展望、权威政策法规发布和解读、分析和研讨B2C、B2B各细分领域的创新发展、电子商务产业链融合、电子商务人才培训和应用等问题.