高性能与调优

2018-07-23 11:32:44 浏览数 (1)

性能度量

  • TPS和RT

好的性能从设计开始

设计思路

  • 分而治之:分层,分区,分模块,可以针对性做优化
  • 应用无状态:水平扩展
  • 有效使用缓存:关注缓存读写比,命中率
  • 异步通信
  • nosql:非结构化,非关系型数据,热点数据
  • 多核并发设计:使用线程池,copyonwrite,concurrenthashmap,volatile,reentrantlock,readwritelock,condition,threadlocal
  • 考虑使用性能更好的加密算法
  • 考虑使用更好的序列化工具:protobuf,thrift
  • tpc选择:http调用每次都需要建立链接,消息头比较大,性能比不上thrift
  • 合并请求:循环调用某服务,考虑批量调用接口,可以合并请求
  • 对象池化:避免每次都new一个
  • 合理分配集合大小,避免频繁扩容及浪费
  • 限制IO读写大小,避免oom
  • 单例模式,减少GC
  • 内存泄漏:压测程序,通过jmap,btrace分析GC
  • NIO由于非阻塞,可以极大提高吞吐量,Netty
  • 压缩:减少网络传输数据大小
  • 异步化:提高并发能力,将耗时操作异步化,不影响主流程
  • 线程数:控制合理线程数,线程过多导致系统CPU忙于线程切换,降低应用处理能力
  • 减少锁竞争:否则线程过多,线程之间切换频繁

0 人点赞