给Apache做压力测试时遇到的问题

发表于:2013-12-14来源:IT博客大学习作者:phpor 点击数: 标签:压力测试
给Apache做压力测试时遇到的问题.最近,在Linux上对Apache-2.1.16做了一下压力测试;只访问一个简单的hello world静态文件,做了多次,每秒处理请求次数才700左右; 一定是哪里出现了问题,因为: 1. 虽然load很高,但是cpu和io都很低,这种现象就比较奇怪

  最近,在Linux上对Apache-2.1.16做了一下压力测试;只访问一个简单的hello world静态文件,做了多次,每秒处理请求次数才700左右;

  一定是哪里出现了问题,因为:

  1. 虽然load很高,但是cpu和io都很低,这种现象就比较奇怪

  2. client端的负载很低

  3. 曾经有过 2000/s的测试,而且当时的机器配置比现在的要差的多

  当我使用同样的方法对nginx做测试的时候,nginx可以达到 2.2w/s 。

  无奈之下,只好又把strace请出来了,发现写日志的地方很慢。

  于是怀疑是磁盘问题; 使用hdparm测试了一下磁盘,没有问题; 又用 time dd ... 测试了一下,写的速度也 700+MB/s ; 回头想想,确认了一下nginx也是记日志的,而且都是同一块磁盘,大概不是磁盘问题了。

  修改Apache 配置文件,把记日志的配置注释掉, 重新测试,发现可以达到 7k+/s 了;仔细观察Apache的配置,是这样写的:

  TransferLog "|/data1/apache2/bin/rotatelogs /path/to/logfile"

  于是,我想怀疑rotatelogs 这个程序了,但是似乎也没有道理; 那么就只剩下那个管道了,恩, 大概问题就出现在管道上了。

  因为管道的大小为4k, 多进程写管道,单进程读管道,也难免会出现阻塞的情况;另外,load高的时候,io是很低的,所以说磁盘不是瓶颈。 管道是瓶颈

  ----------

  如何利用管道来模拟一个cpu、io都很低,但是load很高的实例呢?

原文转自:http://blogread.cn/it/article/3959?f=sa