参考地址:https://github.com/link1st/go-stress-testing
安装golang环境

yum install -y golang

下载软件包

wget -q https://codeload.github.com/link1st/go-stress-testing/zip/master
unzip go-stress-testing-master.zip

下载执行命令

https://github.com/link1st/go-stress-testing/releases/download/v1.0.1/go-stress-testing-linux
chmod +x go-stress-testing-linux
cat >/root/go-stress-testing-master/build.sh <<EOF
#!/usr/bin/env bash
# 编译linux下可以执行文件
go build -o go-stress-testing-linux main.go
# 使用交叉编译 linux和windows版本可以执行的文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o go-stress-testing-linux main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o go-stress-testing-win.exe main.go
EOF

执行编译 

sh build.sh

命令参数说明

-c 表示并发数
-n 每个并发执行请求的次数,总请求的次数 = 并发数 * 每个并发执行请求的次数
-u 需要压测的地址

测试百度

./go-stress-testing-linux -c 1 -n 100 -u https://www.baidu.com/

开始启动  并发数:1 请求数:100 请求参数:
request:
form:http
url:https://www.baidu.com/
method:GET
headers:map[]
data:
verify:statusCode
timeout:3s
debu:false
─────┬───────┬───────┬───────┬────────┬────────┬────────┬────────┬────────
耗时│ 并发数│ 成功数│ 失败数│ qps │最长耗时│最短耗时│平均耗时│ 错误码
─────┼───────┼───────┼───────┼────────┼────────┼────────┼────────┼────────
1s│ 1│ 31│ 0│ 31.41│ 40.56│ 28.32│ 31.83│200:31
2s│ 1│ 63│ 0│ 31.79│ 40.56│ 27.70│ 31.45│200:63
3s│ 1│ 91│ 0│ 30.56│ 154.86│ 26.33│ 32.73│200:91
3s│ 1│ 100│ 0│ 30.74│ 154.86│ 26.33│ 32.53│200:100 ************************* 结果 stat ****************************
处理协程数量: 1
请求总数: 100 总请求时间: 3.263 秒 successNum: 100 failureNum: 0
************************* 结果 end ****************************

./go run main.go -c 1 -n 100 -u https://www.baidu.com/

─────┬───────┬───────┬───────┬────────┬────────┬────────┬────────┬────────
耗时│ 并发数│ 成功数│ 失败数│ qps │最长耗时│最短耗时│平均耗时│ 错误码
─────┼───────┼───────┼───────┼────────┼────────┼────────┼────────┼────────
1s│ 1│ 29│ 0│ 30.46│ 40.27│ 27.73│ 32.83│200:29
2s│ 1│ 55│ 0│ 27.89│ 133.45│ 26.71│ 35.86│200:55
3s│ 1│ 86│ 0│ 28.80│ 133.45│ 25.89│ 34.73│200:86
4s│ 1│ 115│ 0│ 28.84│ 133.45│ 25.89│ 34.67│200:115
5s│ 1│ 146│ 0│ 29.35│ 133.45│ 25.89│ 34.07│200:146
6s│ 1│ 176│ 0│ 29.45│ 133.45│ 25.89│ 33.96│200:176
7s│ 1│ 199│ 0│ 28.62│ 184.13│ 25.25│ 34.94│200:199

 

参数解释:
耗时: 程序运行耗时。程序每秒钟输出一次压测结果
并发数: 并发数,启动的协程数
成功数: 压测中,请求成功的数量
失败数: 压测中,请求失败的数量
qps: 当前压测的QPS(每秒钟处理请求数量)
最长耗时: 压测中,单个请求最长的响应时长
最短耗时: 压测中,单个请求最短的响应时长
平均耗时: 压测中,单个请求平均的响应时长
错误码: 压测中,接口返回的 code码:返回次数的集合  

内核优化
修改程序最大打开文件数
被压测服务器需要保持100W长连接,客户和服务器端是通过socket通讯的,每个连接需要建立一个socket,程序需要保持100W长连接就需要单个程序能打开100W个文件句柄

vim /etc/security/limits.conf
这里需要把硬限制和软限制、root用户和所有用户都设置为 1040000
core 是限制内核文件的大小,这里设置为 unlimited
 添加以下参数

root soft nofile 1040000
root hard nofile 1040000 root soft nofile 1040000
root hard nproc 1040000 root soft core unlimited
root hard core unlimited * soft nofile 1040000
* hard nofile 1040000 * soft nofile 1040000
* hard nproc 1040000 * soft core unlimited
* hard core unlimited

注意:
/proc/sys/fs/file-max 表示系统级别的能够打开的文件句柄的数量,不能小于limits中设置的值
如果file-max的值小于limits设置的值会导致系统重启以后无法登录
# file-max 设置的值参考
cat /proc/sys/fs/file-max
12553500
修改以后重启服务器,ulimit -n 查看配置是否生效

搭建go-stress-testing压力测试的更多相关文章

  1. 使用stress进行压力测试

    本文转载自使用stress进行压力测试 导语 stress,顾名思义是一款压力测试工具.你可以用它来对系统CPU,内存,以及磁盘IO生成负载. 安装stress 几乎所有主流的linux发行版的软件仓 ...

  2. centos8平台使用stress做压力测试

    一,安装stress: 说明:el8的源里面还没有,先用el7的rpm包 [root@centos8 source]# wget https://download-ib01.fedoraproject ...

  3. linux压力测试工具stress

    最近给PASS平台添加autoscaling的功能,根据服务器的负载情况autoscaling,为了测试这项功能用到了stress这个压力测试工具,这个工具相当好用了.具体安装方式就不说了.记录下这个 ...

  4. Linux压力测试工具stress的参数详解

    为了测试服务器的负载情况,可以使用stress这个压力测试工具,可以在环境上验证测试下. stress安装 sudo yum install -y epel-release sudo yum inst ...

  5. 树莓派压力测试工具S-Tui + Stress的使用

    压力测试工具S-Tui + Stress的使用 树莓派# 背景故事 打算测试一下树莓派外壳的散热性能,需要能压满CPU100%,同时显示温度.CPU频率.CPU占用率,那么这款工具你值得拥有. 软件介 ...

  6. 压力测试工具集合(ab,webbench,Siege,http_load,Web Application Stress)

    压力测试工具集合(ab,webbench,Siege,http_load,Web Application Stress) 1 Apache附带的工具ab ab的全称是ApacheBench,是Apac ...

  7. 微软压力测试工具 web application stress

    转自 http://www.cnblogs.com/tonykan/p/3514749.html lbimba  铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网 ...

  8. 使用Microsoft Web Application Stress Tool对web进行压力测试

    Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法.Web 压力测试通常是利用一些工具,例如微软 ...

  9. (转)使用Microsoft Web Application Stress Tool对web进行压力测试

    http://www.blogjava.net/crespochen/archive/2009/06/02/279538.html Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试 ...

  10. 使用Web Application Stress Tool 进行压力测试

    1.在测试客户端机器上启动Web Application Stress Tool,在弹出的“建立新脚本”对话框中选择“Record”按钮: 2.在“Record”参数设置第一步中,所有的checkbo ...

随机推荐

  1. LaTeX分分钟上手【转】

    原文地址:<LaTeX新人教程,30分钟从完全陌生到基本入门> 需要说明的几点: 1.文中说用XeTex,但是我的总是失败(出现!undefined control sequence.), ...

  2. 被Spring坑了一把,查看源码终于解决了DataFlow部署K8s应用的问题

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Docker & Kubernetes相关文章:容器技术 基于各种原因,团队的Kubernetes被加了限制,必须在 ...

  3. Python中自己不熟悉的知识点记录

    重点笔记: Python  它是动态语言 动态语言的定义:动态编程语言   是   高级程序设计语言   的一个类别,在计算机科学领域已被广泛应用.它是一类   在 运行时可以改变其结构的语言   : ...

  4. Ubuntu 16.04 安装Python 3.6

    1.配置软件仓库,因为python 3.6 新版没有发布到ubuntu的正式仓库中,咱们通过第3方仓库来做.在命令行中输入: sudo add-apt-repository ppa:jonathonf ...

  5. 【新阁教育】基于Log4Net实现日志信息双向存储(含源码)

    1.引言 在上位机开发中,日志记录是必不可少的,我们可以通过日志记录做日志分析及错误追踪.初学者会采用txt文本写入来实现日志保存,但是文本写入不是线程安全,当存在多个线程同时写入日志时,就会出现一些 ...

  6. springBoot 使用webSocket

    本文(2019年6月18日 飞快的蜗牛博客) 有许多人走着走着,就迷失了自己,所以不论发生了什么,有时候抱着自己去静下来想想,要好好的对待自己:"钱塘江上潮信来,今日方知我是我", ...

  7. 编程体系结构(03):Java集合容器

    本文源码:GitHub·点这里 || GitEE·点这里 一.集合容器简介 集合容器是Java开发中最基础API模块,通常用来存储运行时动态创建的元素,基本特点如下: 泛型特点,存储任意类型对象: 动 ...

  8. DataStax Bulk Loader教程(一)

    DataStax Bulk Loader - dsbulk是在DSE 6 引入的一种新的批量加载方法.(点击这里下载DataStax Bulk Loader). 它提供了将数据加载(load)到Dat ...

  9. 学习 | jQuery全屏滚动插件FullPage.js

    简介 fullPage.js是一个基于jQuery的全屏滚动插件,它能够很方便.很轻松的制作出全屏网站. 主要功能 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 C ...

  10. RXJAVA之异步操作

    Observable提供了一些do方法来快速提供监听响应事件. doOnComplete 当complete时,执行action. doOnTerminate 当结束执行action,无论是正常还是异 ...