性能瓶颈

单节点瓶颈分析

增长并发和吞吐

并发:单机多 CPU、单CPU多 Core、单 core 超线程 IO密集型应用: 多进程->多线程->异步->协程?? CPU密集型应用:多进程-->多线程 ?? 方法:算法

  • 异步编程:回调机制和事件驱动
  • 协程:Ucontext(in glibc)、Bthread(in baidurpc)M:N协程

去除没必要要动做

减小网络重连(长链接) 下降链接数(链接池) 减小线程切换(线程池) 减小内存分配和释放(内存池) 减小耗时的操做和运算 (memset,浮点运算,除法,指数,对数运算,慎用stl) 在线转离线 (离线生成词典,如推荐)编程

避免冲突

多线程无锁算法:无锁共享数据、无锁数据结构、Copy on Write Hash 冲突:桶如何分配、如何减小 hash 冲突 合理使用锁:锁的时间尽量短、下降冲突几率、避免死锁网络

IO优化

随机写--》顺序写 顺序写磁盘效率比随机写内存还要高,这是Kafka高 吞吐率的一个很重要的保证数据结构

集群瓶颈

下降数据传输量: 数据压缩:CPU 与网络 IO 权衡 , 减小交互次数 打包访问 减小跨机器 IO多线程

均衡 cache并发

相关文章
相关标签/搜索