IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

PHPor 的blog 2011-07-06 23:44:05 累计浏览 7,334 次
本机暂存
最近,在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很高的实例呢?

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 配置Nginx+uwsgi更方便地部署python应用 (累计阅读 107,167)
  2. 搜狐闪电邮箱的 Nginx/Postfix 使用模式 (累计阅读 33,897)
  3. 记录一个软中断问题 (累计阅读 16,956)
  4. 解析nginx负载均衡 (累计阅读 16,624)
  5. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,058)
  6. server日志的路径分析 (累计阅读 11,241)
  7. Nginx模块开发入门 (累计阅读 11,172)
  8. 检查nginx配置,重载配置以及重启的方法 (累计阅读 10,897)
  9. Cacti 添加 Nginx 监控 (累计阅读 10,645)
  10. fsockopen 异步处理 (累计阅读 10,346)