服务器压力测试工具

服务器压力测试工具

Windows系统下的压测工具

Apache-Jmeter

下载地址:http://jmeter.apache.org/

在这里插入图片描述

环境配置说明

Windows下安装步骤如下:

第一步: 安装JDK, 必须JDK1.7以上, 推荐1.8版本

jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK一键安装,无需多讲,默认安装路径即可

环境配置:计算机>属性>高级属性>环境变量

变量名:JAVA_HOME

变量值:D:Javajdk1.8.0_73(这里是jdk安装路径)

变量名:path

变量值:%JAVA_HOME%bin;%JAVA_HOME%jrebin;(使得系统可以在任何路径下识别java命令)

变量名:CLASSPATH

变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;(这里需要注意的是.不能漏)Java运行环境加载类的路径

环境配置是否成功,输入javac或者java -version验证,出现如下界面表示成功

在这里插入图片描述
在这里插入图片描述

第二步: 进入jmeter下载页面: http://jmeter.apache.org/download_jmeter.cgi下载相应安装包, 如: apache-jmeter-3.3.zip

第三步: 解压安装到一个英文名称目录下, 如C:

第四步: 配置相应环境变量如下

新建变量名:JMETER_HOME

变量值: C:apache-jmeter-3.3

修改变量名CLASSPATH,加上如下变量值:

%JMETER_HOME%libextApacheJMeter_core.jar;%JMETER_HOME%libjorphan.jar;%JMETER_HOME%liblogkit-2.0.jar;

若CLASSPATH尾部没有分号;还需要先加分号;再加上述变量值

第五步: 进入C:apache-jmeter-3.3bin,进入bin目录后,双击运行jmeter.bat,打开的时候会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不可以关闭命令窗口。

会出现如下界面,则表示安装成功:

在这里插入图片描述
在这里插入图片描述

工具配置说明
  1. 打开工具
    首先进到你的jmeter安装路径,找到bin文件夹,点击进去,找到jmeter.bat,鼠标右键用管理员方式运行,或者直接双击打开,此时会弹出2个界面:1.个是命令窗口,使用jmeter的时候此命令窗口不能关,你缩小到电脑任务栏即可。2.还有一个界面是jmeter工作页面,你可以在里面进行相关的操作.具体如图

在这里插入图片描述
在这里插入图片描述

  1. 创建测试计划

在这里插入图片描述

  1. 创建线程组
    在这里插入图片描述
    在这里插入图片描述

  2. 创建请求

在这里插入图片描述

  1. 创建请求监听器

在这里插入图片描述

  1. 启动

在这里插入图片描述

  1. 查看结果

在这里插入图片描述

参考文章
  • 配置说明
    https://www.jb51.net/article/232152.htm
    https://www.cnblogs.com/monjeo/p/9330464.html

  • 压测数据说明
    https://blog.csdn.net/alitech2017/article/details/110475438?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165518754716781818750320%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165518754716781818750320&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-110475438-null-null.142v14pc_search_result_control_group,157v14control&utm_term=%E5%8E%8B%E6%B5%8B&spm=1018.2226.3001.4187

Linux系统下压测工具

ApacheBench(ab)

简介

ab是apachebench命令的缩写, apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。 比如nginx、tomcat、IIS等

原理

ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

安装
# yum安装
yum -y install httpd-tools  

# 查看版本号
ab -V

# 操作帮助
ab --help
命令

常用命令:

# 同时处理1000个请求并运行30次index.php(注意:-n值(请求数)不能小于-c值(并发数))
ab -c 30 -n 1000 http://www.xxx.cn/index.php

结果:

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.xxx.cn (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.18.0
Server Hostname:        www.xxx.cn
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /key
Document Length:        32 bytes

Concurrency Level:      30
# 整个测试持续的时间
Time taken for tests:   3.457 seconds  
# 完成的请求数量
Complete requests:      1000
# 失败的请求数量
Failed requests:        0
Write errors:           0
# 整个场景中的网络传输量
Total transferred:      294005 bytes
# 整个场景中的 HTML 内容传输量
HTML transferred:       32000 bytes
# 大家最关心的指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Requests per second:    289.29 [#/sec] (mean)
# 大家最关心的指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值
Time per request:       103.701 [ms] (mean)
Time per request:       3.457 [ms] (mean, across all concurrent requests)
# 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Transfer rate:          83.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       29   36   3.7     36      52
Processing:    43   64  14.3     60     140
Waiting:       43   64  14.3     60     140
Total:         74  100  15.2     97     173

Percentage of the requests served within a certain time (ms)
  50%     97
  66%    102
  75%    106
  80%    109
  90%    116
  95%    129
  98%    151
  99%    162
 100%    173 (longest request)
错误说明
  • ab: Cannot use concurrency level greater than total number of requests

ab并发数不能大于请求数,调整-c值小于-n值即可。

  • socket: Too many open files (24)

请求数默认不能超过1024个,可用ulimit -n命令修改,例如:ulimit -n 8192 (设置用户可以同时打开的最大文件数)。

  • ab: Invalid Concurrency [Range 0…20000]

并发数默认不能大于20000个,需要修改apache源代码support目录下ab.c文件,找到:#define MAX_CONCURRENCY 20000,将宏定义的值改大,重新编译安装apache。

  • apr_socket_recv: Connection reset by peer (104)

apr-util有些问题,不太稳定,多试几次就好了

参考资料

https://blog.csdn.net/weixin_45611297/article/details/124367312
https://blog.csdn.net/risingsun001/article/details/24267115

脚本使用简介: /******************************************************************************** void tcc_tell_user(long len,const char *fmt,...) void tcc_init_stochastic() int tcc_produce_stochastic(int a,int b) tcc_sscanf tcc_sprintf tcc_strcpy tcc_strcmp tcc_strstr tcc_strcat tcc_memcpy tcc_memcmp tcc_memset tcc_strlen tcc_malloc tcc_free *********************************************************************************/ void get_hex_string(unsigned char *in_dat,int in_len,char *ou_hex) { int i; char *t=(char*)tcc_malloc(8); ou_hex[0]=0; for(i=0;i<in_len;i++) { if(i%0x04==0 && i!=0) tcc_strcat(ou_hex," "); if(i%0x10==0 && i!=0) tcc_strcat(ou_hex,"\n"); tcc_sprintf(t,"X ",in_dat[i]); tcc_strcat(ou_hex,t); } tcc_free(t); } void msg_init() { // tcc_init_stochastic(); } void *msg_short_connect_form_data(long t,long s,long c,long *len) { char *data=(char*)tcc_malloc(128); *len=128; *(long*)(data+0x00)=128; *(long*)(data+0x04)=1; *(long*)(data+0x08)=0; *(long*)(data+0x0C)=0; int n=tcc_produce_stochastic(100,50000); tcc_sprintf(data+0x10,"hello%d",n); tcc_strcpy(data+0x20,"123456"); return data; } int msg_short_connect_recv_data(long s,long c,void *dat,long len) { unsigned char *ou_dat=(unsigned char*)tcc_malloc(5120); get_hex_string(dat,len,ou_dat); tcc_tell_user(5120,"s:%d c:%d len:%d\n%s\n\n",s,c,len,ou_dat); tcc_free(ou_dat); return 1; } void *msg_long_connect_form_data(long op,long s,long c,long *len) { char *data=(char*)tcc_malloc(128); *len=128; *(long*)(data+0x00)=128; *(long*)(data+0x04)=1; *(long*)(data+0x08)=0; *(long*)(data+0x0C)=0; int n=tcc_produce_stochastic(100,50000); tcc_sprintf(data+0x10,"hello%d",n); tcc_strcpy(data+0x20,"123456"); return data; } int msg_long_connect_recv_data(long s,long c,void *dat,long len) { unsigned char *ou_dat=(unsigned char*)tcc_malloc(5120); get_hex_string(dat,len,ou_dat); tcc_tell_user(5120,"s:%d c:%d len:%d\n%s\n\n",s,c,len,ou_dat); tcc_free(ou_dat); return 1; } void msg_free_data(void *arg) { tcc_free(arg); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值