关键词 #
锁优化,池化,数据库优化,架构优化, 系统优化,性能测试, 监控
应用优化 #
-
应用
- 锁 【4】
- 粒度
- 粗化
- 最小化锁范围
- Eg, 单线程写文件
- 锁拆分,分散锁
- 减少竞争,race condition
- eg. ConcurrentHashMap,LongAdder
- 分离锁
- 读写锁
- 读多写少的场景
- 队头队尾, 两把锁
- 读写锁
- 乐观锁
- CAS
- 粒度
- 并行 【1】
- 多线程
- fork-join模式【2】
- 本地化 Eg. ThreadLocal
- Actor
- Eg. Akka
- CSP
- Eg. Goroutie
- 函数式范性
- 不可变对象
- 单核单线程
- Eg. Redis, Nginx
- 多线程
- 池化(重用)
- Eg. 线程池,数据库连接池
- 代码调优
- 字符串操作
- 多线程调优
- 锁 【4】
- 线程个数【9】
- 异步操作 【8】
- 简化代码
- 热点优化 【5】
- 数值精度
- Eg. 双精度 单精度
- 锁 【4】
算法优化 #
-
算法
- 算法调优
- 分而治之 【6】
- fork-join【2】
- Map-Reduce
- 哈希算法
- 预处理
- 提前计算(预处理),最后合并
- 分而治之 【6】
- 算法和数据结构
- 算法复杂度 大O表示【10】
- 时间复杂度
- O(1)
- 数组访问
- 栈、链表的插入/删除
- Hash Table
- O(log(n))
- 二叉搜索树
- 自平衡二叉搜索树 AVL树 红黑树
- B树(多路树)
- 二叉搜索树
- O(n log(n))
- 快排、归并、堆 快排(分治算法【6】)
- O(n)
- O(n^2)
- 选择、插入、冒泡
- O(1)
- 时间复杂度
- 数据结构
- 树,链表,栈,队列
- 算法复杂度 大O表示【10】
- 算法调优
通用优化 #
-
通用方法
- 异步化 【8】
- 消息
- 进程内 Eg. Disruptor, EventBus
- Broker
- 事件 Eg. EventSource
- 服务异步化 Eg. 异步网关
- 消息
- Batch
- Eg. redis pipeline
- buffer io
- Copy on Write
- Eg. mysql MVCC, CopyOnWriteArrayList
- 异步化 【8】
数据库优化 #
- 索引优化
- 大表优化
- 水平拆分
- 垂直拆分
- 慢SQL优化
- 乐观锁
架构/系统优化 #
-
架构/系统优化
- 弹性/伸缩
- 资源调度 Eg. k8s
- 资源扩容
- 可扩展
- 垂直拆分
- 水平拆分
- 分布式
- 并行 【1】
- 延迟 Eg. 跨IDC网络延迟 上海<->北京 50ms
- 节省空间/时间换空间【8、11】
- 不存储,重新计算
- 稀疏数据结构 Eg. 稀疏矩阵
- 数据压缩传输 RSYNC 的核心算法 Huffman 编码压缩算法
- 动态分配策略 Eg. ArrayList(10),HashMap(16)的动态扩展
- 垃圾回收
- 空间换时间
- 缓存
- 数据冗余,replication
- 系统结构
- 大型系统分解成模块 “粗略估算”,性能分析
- 系统软件
- 替换更快的操作系统、中间件、数据库、编译器
- 弹性/伸缩
Linux系统优化 #
-
系统
- 文件系统
- pageCache, 预读 Eg. Rocketmq
- 顺序写,随机读
- 大块读优于小块读
- CPU
- CPU绑定
- CPU上下文切换
- Eg. Redis单线程 CPU不是Redis的瓶颈, 瓶颈可能是内存的大小或者网络带宽
- CPU缓存
- 问题:伪共享 解决:cacheline padding
- 网络I/O
- NIO,非阻塞I/O,epoll
- 协议调优 TCP参数
- 内存
- zeroCopy
- HugePage
- 文件系统
参考 #
- 高性能高并发系统的稳定性保障 京东
- Linux性能优化实战 极客时间
- 性能测试应该怎么做? coolshell deleted
- Go to Page self deleted
- 关于容量预估/性能压测的思考 deleted 失效
- Go to Page self 重复的 deleted
- xxx
- 性能调优攻略 coolshell ***
- Go to Page self
- 每个程序员都应该收藏的算法复杂度速查表
- 《编程珠玑 第2版》
- wordcount设计与优化 竞赛题
其他 #
- latency 未
- Go to Page self 未
- Go to Page self 未