有关“密集型”的概念,baidu的“知道”中“什么是劳动密集型产品”的解释是:是指生产该产品需要大量的劳动力,产品成本中活劳动量消耗占比重较大,比如纺织产品、服务产品、食品、日用百货等。

  同样在性能测试过程中我们为了区别应用程序对系统资源的消耗比重不同,把一些较典型的对某类资源消耗比较多的的程序称为“××密集型”的。比如如果某程序在运行过程中CPU的利用率始终很高(在80%甚至90%以上)时我们可以称为为是“CPU密集型”的,如果某程序在运行过程中频繁地(相对来说CPU等其它资源较空闲时)读取或写入磁盘我们称之为是“I/O密集型”或者“磁盘密集型”的。此外如果应用程序在大用户量并发访问时占用更多的带宽而CPU、磁盘等其它资源较空闲,可以称之为是“带宽密集型”的。通常在确定了这几个概念后其实已经明确地标识出了该应用程序可能存在的性能瓶颈,例如如果应用程序是“带宽密集型”的,那么除非保证有足够的带宽,否则它将成为应用程序的性能瓶颈。

  但是一般的应用程序并不是都这么明显地只好用一种资源,他们都是相对来说的。不过有些应用程序的特点决定了它属于其中某一类,比如对于一些偏重于需要大量计算的web应用程序属于是CPU密集型的,对于静态图片访问的web应用程序,它可能是“I/O密集型”或者“磁盘密集型”的。

  此外针对以上不同类型的应用程序可以采取不同的瓶颈消除策略:

  1、对于“CPU密集型”的web应用程序可以采取优化算法的方式,或者采用多CPU的机器、集群来提高应用程序的并行响应能力;

  2、对于“I/O密集型”的web应用程序可以采用I/O效率较高的SCSI硬盘,或者采用集群的方式;

  3、对于“带宽密集型”的web应用程序,在不影响功能的情况下尽量减少上传下载的信息量或者使用更高的带宽,或者采用HTTP压缩的办法。

  本文总结了几类典型的应用服务的特点,并给出了一些针对性解决问题的办法。在实际工作中可能是集中情况叠加在一起的,因此在采取消除瓶颈的策略时要综合考虑。