一、ab(Apache Bench) 压测
ApacheBench 是 Apache服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。

语法及参数

Usage: ab [options] [http[s]://]hostname[:port]/path

用法:ab [选项] 地址

选项:

-n requests #执行的请求数,即一共发起多少请求。
-c concurrency #请求并发数。

示例:

ab -c 5 -n a https://www.baidu.com

二、go-stress-testing
go 实现的压测工具,每个用户用一个协程的方式模拟,最大限度的利用 CPU 资源

快速搭建:

clone 项目

git clone https://github.com/link1st/go-stress-testing.git

进入项目目录

cd go-stress-testing

运行

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

参数说明:

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

Go语言编译失败,输出如下错误日志,关键错误提示 invalid pseudo-version

go: XXXXXXX: invalid pseudo-version: git fetch –unshallow -f origin in XXXXXXXXXX: exit status 128:
fatal: git fetch-pack: expected shallow list
fatal: The remote end hung up unexpectedly

报错原因是Git客户端版本太旧了.

https://github.com/golang/go/issues/38373

在 CentOS 7 和 RHEL 7 上,如果使用默认存储库进行安装,则版本为 1.8.3.1。

解决方法:

升级GIT,对于 CentOS 7 和 RHEL 7,使用 IUS 存储库安装将解决问题。

$ yum -y erase git
$ yum -y install https://repo.ius.io/ius-release-el7.rpm
$ yum -y install git222

检查版本:

$ git –version
git version 2.22.5

适用于有高精度需求的场景

导入:decimal模块

from decimal import Decimal

class DecimalEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Decimal):
return str(obj)
return json.JSONEncoder.default(self, obj)

val = Decimal(1)/Decimal(3)
number = val.quantize(Decimal("0.00000000")) #0.33333333
result = {'data': Decimal(number)}
return json.dumps(result, cls=DecimalEncoder)

安装screen

yum install screen

查看会话

screen -ls

连接会话

screen -r 会话ID

清除会话(screen -ls会显示该会话为dead状态)

screen -wipe

共享会话

screen -x

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

参数说明

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。