文章目录
[+]
数据库
工作任务内存超过可用的RAM内存长/短查询写入冲突大连接(join)占用内存虚拟化
共享一个HDD、磁盘寻死(disk seek death)在云端网络I/O波动编程

(图片来自网络侵删)
磁盘
访问本地磁盘随机访问磁盘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%CPUDNS查询数据包丢失网络中存在预期外的路由访问网络磁盘共享SAN服务器故障—>无法从服务处得到响应进程
测试时间开发时间团队规模预算代码债务内存
内存不足—>杀死进程,切换到swap,挂起内存不足导致磁盘交换(与swap相关)记忆库开销过大(Memory library overhead)内存分片(在Java中需要会因为内存回收而停顿;在C中,malloc总是开始分配内存)