Home 技术文章 [转]后台程序开发:性能的极限是什么?

QQ20160114-0@2x.png

                                         后台程序调试技巧及性能分析

去年写的prezi,到现在其中的知识仍然完全适用。

首先,prezi在此:https://prezi.com/3p17hwgqpqvs/presentation/


然后,简单几句讲清楚性能的主要几个点:

在异步框架中,CPU本身是不会被IO阻塞的,而我们所关注的点就来到了:

  1. CPU消耗的主要点

    1. 字符串操作(尝试流)
    2. 内存操作(内存池)
    3. 数据结构设计(红黑树换HASHMAP)
  2. 并发的处理

    1. 锁的临界区减少(仅在必要时加小粒度锁)
    2. 队列化(无锁)
  3. 计算、存储、网络的权衡

    1. 合理的将网络、计算的开销减小,增大存储的开销(缓存)
    2. 更合理的调度(docker、云化)

然而,另一个点很需要注意(和性能关系不大):

  • 异步逻辑的协程化:减少回调地狱,很好的加快开发速度

以及,以防成为一个标题党,什么才是性能的极限?

性能的极限在于“平衡”:

  • 计算、存储、网络,三者要做到平衡。
  • 大部分计算、网络的瓶颈都可以用增大存储来解决,但要有度。

大部分的性能 state-of-art (一台普通 4 核服务器):

  • 这台服务器的最大报文数在~50w/s (和服务器年份有关)
  • 通过 C10M ( dpdk 、 netmap )等技术可以达到 1kw+/s 的最大报文数,然而目前并没有太多卵用
  • thrift 、 grpc 这类框架,一个业务逻辑较轻的服务 TPS 大概能到上万(后台服务标准)
  • 分词、分类( SVM 等),文本处理等 CPU 密集型的业务, TPS 大多只能到百级
  • 特殊的:只要内存足够,长连接服务上 C10M 很轻松

以上

原文地址

打赏
0 comment

You may also like

Leave a Comment

*

code