常见的10种“瓶颈”
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()分配内存变慢
常见的10种“瓶颈”相关推荐
- 压力表负值表示什么_压力表常见的10种故障分析和修理方法
压力表常见的 10 种故障分析和修理方法 一.压力表误差成比例地增加或减少如何调整 故障原因:主要是传动比发生了变化. 只要移动示值调节螺钉, 就能解决. 压力表误差逐渐增大时, 将示值调节螺钉往右( ...
- 最常见的 10种网络安全攻击类型
网络攻击是指旨在针对计算机或计算机化信息系统的任何元素更改.破坏或窃取数据以及利用或损害网络的行为.随着近年来越来越流行的业务数字化,网络攻击一直在增加.虽然有几十种不同类型的攻击,但网络攻击列表包括 ...
- 计算机病毒常见病状,电脑中病毒常见的10种症状
电脑中病毒常见的10种症状 计算机中了病毒有什么症状呢?下面是小编收集的资料,希望大家喜欢! 电脑中病毒的症状(一)文件或文件夹无故消失: 当发现电脑中的部分文件或文件夹无缘无故消失,就可以确定电脑已 ...
- 深度学习中常见的10种激活函数(Activation Function)总结
目录 一:简介 二:为什么要用激活函数 三:激活函数的分类 四:常见的几种激活函数 4.1.Sigmoid函数 4.2.Tanh函数 4.3.ReLU函数 4.4.Leaky Relu函数 4.5.P ...
- NLP入门+实战必读:一文教会你最常见的10种自然语言处理技术
转载自:https://www.sohu.com/a/203314063_308467 作者:大数据文摘 自然语言处理(NLP)是一种艺术与科学的结合,旨在从文本数据中提取信息.在它的帮助下,我们从文 ...
- 区块链游戏常见的 10 种分类
区块链游戏表面上与现有的游戏玩法并无二致,但是有了区块链的加持,玩家能够拥有独一无二的真正属于自己的数字资产,并且更加安全. 现阶段大体可以将区块链游戏分为四大类:以太坊游戏.链克游戏.公有链游戏和私 ...
- 【跨境干货】欧洲收款常见的10种支付方式
在欧洲,许多外贸商家大多会选择PayPal和国际信用卡支付,但从安全角度来看,不管是PayPal还是信用卡都是会有拒付风险.所以除此之外,小编另多介绍一种本地支付的收款方式,就是用各国家当地流行的支付 ...
- 最常见的10种Java异常问题!
封面:洛小汐 译者:潘潘 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践箴言 为什么在try代码块 ...
- golang-文章翻译-go常见的10种错误
文章目录 一.枚举默认值和json反序列化 二.BenchMarking和内联 三.每次传参都应该用指针吗? 四.break和条件控制语句 五.错误管理 六.数组初始化 6.1 len 和 cap 6 ...
- 移动端App广告常见的10种形式
什么是App广告? App广告,或称In-App广告,是指智能手机和平板电脑这类移动设备中第三方应用程序内置广告,属于移动广告的子类别. App广告兴起得益于其载体-App的风行.平板电脑和大屏触摸手 ...
最新文章
- 正则重温(学习笔记)
- logstash redis kafka传输 haproxy日志
- ThinkPHP整合百度Ueditor图文教程
- ruby array_Ruby中带有示例的Array.shuffle方法
- 邮件服务器两种协议,邮件服务器协议
- LeetCode--41.缺失的第一个正数(C)
- linux shell 批量清空,shell脚本批量删除docker镜像
- SAP中文件的上传和下载
- 一分钟快速了解内网穿透软件有哪些
- mac开启HiDPI
- 武大计算机专硕和学硕,专硕与学硕,到底有什么区别?
- 笔记本打印机显示服务器脱机,打印机显示脱机状态怎么办 打印机显示脱机状态解决方法【详解】...
- vue-cli-service build 如何环境设置,打出不同环境的包
- Pytorch中的einsum
- C# 模拟鼠标移动和点击(转载)
- Linux下实现聊天室
- java非必传参数怎么处理_SpringBoot 设置传入参数非必要的操作
- Flutter Card使用
- 排障集锦:九九八十一难之第十三难!-------------史上最全MySQL 单实例故障排查
- linux启动进程 c,Linux启动新进程的三种方法
热门文章
- NOI2015 小园丁和老司机
- USACO 2016 JANUARY CONTEST, BRONZE PROBLEM 3. MOWING THE FIELD(收割庄稼)
- java编写程序防止电脑屏幕休眠
- 《高效能程序员的修炼》一磨刀不误砍柴工
- 微型计算机硬件系统包括什么,微型计算机硬件系统由什么组成(6个基本组成部件)...
- opengles加载obj格式3D模型含光照和纹理
- 最佳学习方法(10)学习方法介绍
- Android利用NotificationListenerService实现消息盒子功能
- 手机自动休眠与距离感应器失效的问题
- 计算机专业大学分数线低的,成绩徘徊在985、211分数线边缘,这4所大学考上容易,退档率极低...