|  1. 文档 高性能的 PHP 封装的 HTTP Restful 多线程并发请求库-MultiHttp Mac下的Web性能压力测试工具:ab(ApacheBench) http://httpd.apache.org/docs/2.0/programs/ab.html // 官网 Apache Benchmark cURL - 学习/实践_william_n的博客-CSDN博客 -- curl也支持多并发 PHP使用curl_multi实现并发请求的方法示例php技巧-php教程-PHP中文网 https://www.php.net/manual/zh/function.curl-multi-init.php 使用PHP并发执行任务–curl_multi应用 PHP中使用CURL之php curl详细解析和常见大坑 如何模拟并发请求_beyond__devil的博客-CSDN博客_模拟并发请求 2. 整理输出 2.1 环境 Windows 10 64位 专业版 WAMP [apache 2.x mysql 8.0 php 7.x] 这里直接通过PHPstudy 集成安装. Phpstudy v8.0 - 创建本地站点域名_william_n的博客-CSDN博客 模拟/实现并发请求方式: 无非两种, 一种借助工具, 另外一种则是使用代码去做. 2.2 工具 AB ApacheBench 是 Apache服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问, 因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。 后补充: ab是非图形化的并发测试工具,没有Jmeter、Loadrunner那样有各种场景设计、各种图形报告和监控,只需一个命令即可,有输出描述,可以简单的进行一些压力测试。 当然,您也可以选择webbench、siege、http_load、Load impact、阿里云PTS等工具进行很方便的测试。 1). AB测试实践 Windows环境下  1.1) 打开cmd, 进入指定目录:  这里推荐一个小技巧: 直接在在文件地址栏中输入cmd, 按下回车即可, 就会出现cmd窗口, 而且已经处于目标目录下.  查看使用命令:  1.2) 开始使用AB测试 常用格式: ab [options] [http[s]://]hostname[:port]/path 以下, 先使用百度进行测试: ab -n 100 -c 10 http://www.baidu.com/ 参数解读 -n : requests Number of requests to perform //执行的请求数[共计] -c : concurrency Number of multiple requests to make at a time //一次发出的请求数 即一次并发数 两者的关系: -n >= -c 否则会提示报错 或者 ab -n 100 -c 10 -w http://www.baidu.com/ >> baidu.html // 结果以html文件形式保存 截图如下  由上可知: 请求只有99个完成, 结果以请求超时结束. [应该是百度做了防护的原因] ------- 现在使用我们自己的接口------- 查询接口 http://laravel7.1-admin.test/datetime get请求方式,先使用postman做单次查询  开始使用AB进行压测 ab -n 1000 -c 10 http://laravel7.1-admin.test/datetime  上面重要的参数指标, 已经使用荧光笔标注出来. 写入接口 http://laravel7.1-admin.test/datetime post请求方式  开始AB 压测 ab -n 10 -c 5 -m post http://laravel7.1-admin.test/datetime  将请求参数直接写在后端接口中~ 写入的结果,查看数据库:  可以看到并发请求完成, 一次写入10条记录. 详细解读:对比参考  Note 1. 如果不想安装apache但是又想使用ab命令的话,我们可以直接安装apache的工具包httpd-tools[https://pkgs.org/download/httpd-tools]。如下: yum -y install httpd-tools 查看ab是否安装成功,可以切换到上述目录下,使用ab –V命令进行检测。 如下: ab -V 如果ab安装成功,通过ab –V命令则会显示ab的相应版本。 注意以上是在linux平台下进行安装的, 如果是windows平台下,我们也可以下载对应的apache版本进行安装。 Mac下自带apache 执行如下命令 apachectl -v ab -V  补充 --- 注意事项 当请求需要设置请求头时,如下各式即可 这里是get请求 ab -n 10 -c 10 -m get -H "x-kumu-token:52fae12be5123456bc3a17aa3adfb0a5" -H "device-id:C625A84ABD0E12349CE248FEFFABE9D7" -H "device-type:ios" -H "version-code:1043" -H "x-kumu-userid:BCRdNJ1234xWThvJ" https://dev-api.xxxxx.com/v1/sig/list  当如果有Query String时,需要将url做转义处理 https://dev-api.xxx.com/v1/sig/list\?size\=20\&lek\= 更多用法: http://httpd.apache.org/docs/2.0/programs/ab.html 补充 如果是post请求,同时是application/json https://gist.github.com/kelvinn/6a1c51b8976acf25bd78#file-cmd-sh # post_loc.txt contains the json you want to post
# -p means to POST it
# -H adds an Auth header (could be Basic or Token)
# -T sets the Content-Type
# -c is concurrent clients
# -n is the number of requests to run in the testab -p post_loc.txt -T application/json -H 'Authorization: Token abcd1234' -c 10 -n 2000 http://example.com/api/v1/locations/ ➜ practice and test ab -n 10 -c 2 \ -H "x-kumu-token:155dc02sdfsadfasdf53144b7d5dd372ff7ae2" \ -H "device-id:C625A84ABD0E12349CE248FEFFABE9D7" \ -H "device-type:ios" \ -H "version-code:1043" \ -H "x-kumu-userid:BCRdNsdfsad4xWThvJ" \ -p ./params.json \ -T application/json https://dev-api.sdfasd.com/feed/sdfasdf 截图  2. 需要认真理解这里性能指标, 如果不理解它们所代表的含义,那么就失去压测的意义~~ 因为你不知道测试的结果是什么,是否良好, 是否需要改进~~~ 后续补充 ... |