apache的ab命令做压力测试

2023-10-27

1. 最基本的关心两个选项 -c -n
例: ./ab -c 100 -n 10000 http://127.0.0.1/index.php

-c 100 即:每次并发100个
-n 10000 即: 共发送10000个请求

2. 测试结果分析

[junjie2@login htdocs]$ /data1/apache/bin/ab -c 1000 -n 50000 "http://10.10.10.10/a.php"
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking 10.65.129.21 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Finished 50000 requests
Server Software: Apache/1.3.33
Server Hostname: 10.65.129.21
Server Port: 80

Document Path: /a.php //请求的资源
Document Length: 0 bytes // 文档返回的长度,不包括相应头

Concurrency Level: 1000 // 并发个数
Time taken for tests: 48.650 seconds //总请求时间
Complete requests: 50000 // 总请求数
Failed requests: 0 //失败的请求数
Broken pipe errors: 0
Total transferred: 9750000 bytes
HTML transferred: 0 bytes
Requests per second: 1027.75 [#/sec] (mean) // 平均每秒的请求数
Time per request: 973.00 [ms] (mean) // 平均每个请求消耗的时间
Time per request: 0.97 [ms] (mean, across all concurrent requests) // 就是上面的时间 除以并发数
Transfer rate: 200.41 [Kbytes/sec] received // 时间传输速率

Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 183 2063.3 0 45003
Processing: 28 167 770.6 85 25579
Waiting: 21 167 770.6 85 25578
Total: 28 350 2488.8 85 48639

Percentage of the requests served within a certain time (ms)
50% 85 // 就是有50%的请求都是在85ms内完成的
66% 89
75% 92
80% 96
90% 168
95% 640
98% 984
99% 3203
100% 48639 (last request)

3. 用127.0.0.1来访问可以排除网络的因素,不过在Linux上用本机的对外ip访问也是不走网卡,没有网络消耗的

ab 帮助:

1.  我们知道用ab测试时,最大并发不能超过1024,其实ab本身没有做这个限制,而是系统限制每个进程打开的最大的文件数为1024,ulimit查看如下:

[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 32765
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

而且open files这个选项在一般的系统里是不允许修改成无限制的,如下:
[root@localhost ~]# ulimit -n unlimited
bash: ulimit: open files: cannot modify limit: Operation not permitted

但是稍微修改大一些或者是小一些,还是允许的,我们修改的小一些试试:
[root@localhost ~]# ulimit -n 1020
[root@localhost ~]# ulimit -n
1020
[root@localhost ~]#

在用ab测试,错误如下:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1019
ioctl(1019, FIONBIO, [1])               = 0
gettimeofday({1243919682, 867688}, NULL) = 0
connect(1019, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.55.38.18")}, 16) = -1 EINPROGRESS (Operation now in progress)
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = -1 EMFILE (Too many open files)
close(-1)                               = -1 EBADF (Bad file descriptor)
第1019个还能正常打开,下一个就报Too many open files的错误了

确实有效,那么我们修改大一些吧:

[root@localhost ~]# ulimit -n 10240
[root@localhost ~]# ulimit -n
10240
[root@localhost ~]#

但是我们发现改大却不行,这里却冒出了一个AF_AX25的名词:
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1024
ioctl(1024, FIONBIO, [1])               = 0
gettimeofday({1243919592, 254950}, NULL) = 0
connect(1024, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.55.38.18")}, 16) = -1 EINPROGRESS (Operation now in progress)
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1025
ioctl(1025, FIONBIO, [1])               = 0
gettimeofday({1243919592, 255242}, NULL) = 0
connect(1025, {sa_family=AF_AX25, sa_data="\0P\n7&\22\0\0\0\0\0\0\0\0"}, 16) = -1 EAFNOSUPPORT (Address family not supported by protocol)

这个AF_AX25可能是buffer溢出造成的,但不确定哦:)。

另:
-n 可以指定最大请求数,但是也不能超过50000哦:)
-v n   当n>=2 时,可以显示发送的http请求头,和响应的http头及内容; 压力测试时不要这么做哦:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

apache的ab命令做压力测试 的相关文章

  • codeStriker(及与svn、bugzilla集成)使用过程记录 续

    下面是codeStriker与svn bugzilla集成使用的脚本 放在codestriker安装目录的bin下 usr bin perl w Create codestriker topic based on subversion co
  • idea右键建包无package(无class等之类的同样适用)

    Intelidea创建好项目之后 右键新建Java class的时候发现没有改选项 只有以下几个选项 把src目录设为源码目录 首先打开Project Structure 如果有test测试文件夹就选中然后点Test按钮 最后点击OK完成
  • 单选按钮input[type=radio],加上disabled后按钮颜色失效,始终默认为灰色

    在前端使用单选按钮input type radio 时 渲染后台数据时将单选按钮设为不可修改 给input加上disabled后 按钮颜色变灰 且通过css修改样式也无法改变 通过百度尝试了类似以下方式的几种修改css样式的常用办法解决 但
  • 关于Java调用dll的方法

    Java语言本身具有跨平台性 如果通过Java调用DLL的技术方便易用 使用Java开发前台界面可以更快速 也能带来跨平台性 Java调用C C 写好的DLL库时 由于基本数据类型不同 使用字节序列可能有差异 所以在参数传递过程中容易出现问
  • maven的package与install命令区别

    之前一直不明白package与 install的区别 今天测试了下 如果b项目依赖a项目 而a打了包 package jar仅仅时打到了a项目的target下 这时编译b项目 还是会报错 找不到所依赖的a项目 说明b项目在本地仓库是没有找到
  • 自动表单数据封装到javaBean中

    页面表单数据的自动封装到javaBean中 先定义一个Bean类 package com test public class Bean private String name private Integer sex public Strin
  • S​alesforce是怎么完成从0到1的?

    我之前写过无数篇Salesforce的文章 但是很多人还是想看看Salesforce如何从0到1以及从1到10的发展 所以我找来Salesforce的创始人在2009年 Salesforce成立十周年 之际亲自写的一本书 云攻略 来给大家梳
  • 架构师进阶之路

    选择的范围太广 可以读的书太多 往往容易无所适从 我想就我自己读过的技术书籍中挑选出来一些 按照学习的先后顺序 推荐给大家 特别是那些想不断提高自己技术水平的Java程序员们 一 Java编程入门类 对于没有Java编程经验的程序员要入门
  • 判断点是否在任意多边形内(java)

    import java util ArrayList public class Test public static void main String args double px 113 0253 double py 23 98049 A
  • 三英战SQL:解析NoSQL的可靠性及扩展操作

    摘要 NoSQL的高性能 易扩展及可靠性一直深受数据工作者的喜爱 然而对比传统关系型数据库NoSQL的优势究竟又在何处 Esen Sagynov在DZone上发布了一篇文章 从运行方面分析Cassandra HBase以及MongoDB产品
  • 遍历一个HashMap

    可以通过2种方法遍历HashMap Map map new HashMap for Iterator iter map entrySet iterator iter hasNext Map Entry entry Map Entry ite
  • java中,如何将一个字节数组转换成字符串?

    String tmpStr 我的测试 byte tb tmpStr getBytes String m new String tb System out println m m byte a a b c d 6 String e new S
  • 经典Proxool.properties

    数据库1jdbc 1 proxool alias WEBGISjdbc 1 proxool driver class oracle jdbc driver OracleDriverjdbc 1 proxool driver url jdbc
  • 史上最全计算机毕业设计题目3(10万套,大部分全国唯一)

    最新c md算法的研究与实现 数据存储加密 任务书 论文 最新毕业设计网上选题系统 源码 论文 最新java图书管理系统 源码 论文 最新毕业设计网上选题系统 源码 论文 原创vbmd算法的研究与实现 数据存储加密 任务书 论文 源码 原创
  • SpringBoot+SSM+MySQL整合项目演示(不涉及前后端交互)

    文章目录 准备工作 创建项目 图1 图2 图3 图4 工程目录 代码编写 数据库 pom文件修改 完整项目目录 User类 创建一个来接收查询出来数据的对象 UserMapper接口 UserMapper xml文件配置 Service层
  • javaRebel(jRebel)使用手记

    想必大家对项目开发中 调试类文件修改时 容器自动重新加载漫长的过程早已厌倦 我今天闲来无事 于是 想试试javaRebel jRebel 这个东西 javaRebel jRebel 现在是收费软件 不过在网上可以下载到确解版的 在网上查了一
  • 压力测试工具apache-ab讲解

    最近在做webservices 得到的数据是从德国那边的服务器 要将这些数据整合到现在网站中去 不知道性能如何 就做个压力测试 现在有些压力测试工具都是收费的 在开源的apache中自带个ab工具 就在C Apache2 2 bin ab
  • Java操作json的通用类

    package com baiyyy polabs util json import java text ParseException import java util ArrayList import java util Date imp
  • 重命名文件或目录(renameTo)

    File or directory with old name File file new File oldname File or directory with new name File file2 new File newname R
  • jdk与jre的区别

    jdk与jre的区别 很多程序员已经干了一段时间java了依然不明白jdk与jre的区别 JDK就是Java Development Kit 简单的说JDK是面向开发人员使用的SDK 它提供了Java的开发环境和运行环境 SDK是Softw

随机推荐

  • 图像隐写分析-Markov特征编程实现

    该特征集是由Shi 1 等人在当时提出的一种新的特征 其思想是DCT系数之间有一定的变化关系 该特征使用马尔可夫转移概率来描述DCT之间的关系 先计算DCT系数水平 垂直 对角方向的差值 使用块内和块间的转移概率作为图像的特征 假设使用F
  • Mybatis执行流程(下)------Dao层详解

    Mybatis执行流程 下 Dao层详解 Mapper简介 上文结尾在项目中发现会用到Dao层的mapper接口和映射文件等 这是因为在之前开发中有很多冗余的工作 比如要实现100个增删查改的方法 除了本身的业务逻辑代码 还要存在开启 提交
  • 矩阵系列:浮点转定点

    浮点转定点是个比较基础的知识点吧 所以作为开篇 简单的举几个小例子 通过例子 相信大家都能掌握它 简单说明一下 浮点包括 符号位 指数位 小数位 浮点的类型包括 单精度浮点数 双精度浮点数 这里用到的是单精度浮点数 单精度浮点数 1位符号位
  • 【100天精通python】Day5:python基础_python 基本语句,流程控制语句

    目录 1 条件语句 1 1 if语句 1 2 if else语句 1 3 if elif else语句 2 循环语句 2 1 for循环 2 2 while循环 3 跳转语句 3 1 break语句 3 2 continue语句 3 3 p
  • 人类早期驯服野生自动驾驶汽车的珍贵史料

    金磊 西风 发自 凹非寺量子位 公众号 QbitAI 从洛杉矶到拉斯维加斯 谁跑第一 谁就能获得100万美元奖金 21年前 美国国防部高级研究计划局 DARPA 局长托尼 特瑟 在一次活动中现场宣布了这么一个决定 并将此命名为 DARPA大
  • Android -- ImageLoader简析

    图片的内存缓存实现 Image Loader库有一个较完整的内存缓存实现 使用者可以根据需要选择已经实现的策略 也可以定制自己项目中需要的策略 内存缓存实现代码在memory和memory impl这两个包中 前者就是规范视图 后者是实现视
  • 【多视几何】对极几何(Epipolar Geometry)基础及OpenCV实现:对极约束、基础矩阵、本质矩阵和单应矩阵

    文章目录 1 对极约束 Epipolar constraint 1 1 基本术语 1 2 数学推导 2 基础矩阵 Fundamental Matrix 3 本质矩阵 Essential Matrix 4 OpenCV中的相关函数 4 1 特
  • jemter安装过程

    一 安装jdk 二 安装Jmeter 1 下载Jmeter 官网地址 http jmeter apache org download jmeter cgi 2 解压Jmeter安装包 配置Jmeter环境变量 按下面变量名和变量值配置Jme
  • 从一道面试题说起:GET 请求能传图片吗?

    作者 沉末 原文地址 https juejin im post 6860253625030017031 前言 曾经遇到的面试题 觉得挺有意思 来说下我的答案及思考过程 首先 我们要知道的是 图片一般有两种传输方式 base64 和 file
  • Linux:20个linux常用命令

    文章目录 20个linux常用命令 1 ls 列出文件list 2 cd 切换目录change directory 3 cp 复制copy 4 mv 移动move 5 rm 移除 删除remove 6 mkdir 创建文件夹make dir
  • 移动IM开源框架对比

    最近在看移动IM相关的资料 然后发现网上有很多的资料 所以在学习过程中 整理了一些笔记 供那些 想了解 移动IM的童鞋一些参考 移动IM技术选型要点 1 协议选型 2 IM 服务器选型 3 协议和IM服务器改造 4 移动IM常见问题以及一些
  • TS的模块化

    TypeScript 模块化 TS中的模块分为外部模块和内部模块 内部模块称为命名空间 内部模块 主要用于组织代码 避免命名冲突 外部模块简称为模块 侧重代码的复用 一个模块里可能有多个命名空间 模块在自身的作用域里执行 而不是在全局作用域
  • 【电气专业知识问答】问:电动机本体温度异常升高如何处理?

    电气专业知识问答 问 电动机本体温度异常升高如何处理 答 1 起因 电动机本体温度异常可能是由于过载 电压低导致过电流 电压高引起铁耗过大 线圈短路或接地 电缆一相断线或接触不良 由于灰尘而导致接触不良等原因 2 处理 应开启备用电动机 停
  • ADXL345测量角度

    include
  • react--umi, 根据权限展示菜单,完成页面权限分配,以及路由鉴权

    umi框架 prolayout布局 access设置菜单权限 initialState全局初始化数据 配合使用 根据后端返回的权限信息 完成菜单的不同的权限的不同展示 1 umi 配合 patlayout 布局 实现根据配置的路由展示菜单栏
  • cocos2d-x2.2.3和android平台环境的搭建

    最开始学习cocos2dx 大多数人可能是被复杂的环境配置过程搞死的 尤其是和Android平台搭建这一块 会把人搞疯 而且各个版本也会有不少的差异 我也是参考了很多才在自己的电脑里搭建好的 仅供参考 是基于cocos2d x2 2 3版本
  • Unity 方向键输入 Input.GetAxis() 和Input.GetAxisRaw(),Vertical 与Horizontal

    GetAxis 是个方法 需要传参数 参数为string类型 参数如下 一 触屏类 1 Mouse X 鼠标沿着屏幕X移动时触发 2 Mouse Y 鼠标沿着屏幕Y移动时触发 3 Mouse ScrollWheel 当鼠标滚动轮滚动时触发
  • ML算法——最优化

    文章目录 数学预备知识 1 最优化问题 2 凸优化 2 1 梯度下降 2 2 牛顿法 2 3 阻尼牛顿法 2 4 拟牛顿法 2 5 总结 数学预备知识 1 最优化问题 最优化问题指的是在给定条件下 找到一个目标函数的最优解 即找到能够使目标
  • ubuntu 开启自启

    开机启动界面 安装chrome浏览器 1 2 wget https dl google com linux direct google chrome stable current amd64 deb sudo apt install goo
  • apache的ab命令做压力测试

    1 最基本的关心两个选项 c n 例 ab c 100 n 10000 http 127 0 0 1 index php c 100 即 每次并发100个 n 10000 即 共发送10000个请求 2 测试结果分析 junjie2 log