#105 ab 报告解析

2016-01-02

安装

CentOS 下的安装:

sudo yum install -y httpd-utils

Debian/Ubuntu 下的安装:

sudo apt install -y apache2-utils

使用

ab -n 请求数 -c 并发书 URL

常用参数:

  • -n 请求数
  • -c 并发数
  • -t 持续测试时间
  • -k 启用 HTTP KeepAlive
  • -H 设置请求头
  • -m 请求方式
  • -T 设置 Content-Type
  • -p 设置 POST 数据文件

如果 POST 请求:

echo 'key1=value1&key2=value2' > /tmp/postdata
-T 'application/x-www-form-urlencoded' -p postdata

echo '{"key1":"value1","key2":"value2"}' > /tmp/postdata
-T 'application/json' -p postdata

报告解读

执行 ab -n100 -c10 https://www.baidu.com/ 可以得到以下结果:

ab result image

需要重要关注的数据做了标记,分别是:

  • 失败数 Failed requests
    应该尽最大可能保证失败数为 0, 也就是成功数 100%
  • 吞吐量(QPS/TPS) (Requests per second)
  • 平均响应时间 (第一个 Time per request)
    应该等于:测试持续时间 / 请求数
    应该等于:并发数 / 吞吐量
  • 最长响应时间 (最后面那行,100% longest request)
    80%, 90%, 95% 响应时间, 也可作为重要参考。

测试方案

Update @ 2021-12-29

url="https://www.baidu.com/"

rm -rf /tmp/httpbench-*.log
for c in {1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,150,200,250,300,350,400,450,500,600,700,800,900,1000};
do echo "==== Concurrency Level: $c ===="; let n=$((c * 100)); ab -n $n -c $c $url > /tmp/httpbench-$c.log; sleep 10; done;

然后用 Python 脚本解析 ab 输出生成报告。

Python 代码就不贴了, 如果感兴趣可以打开看看: abReport.py

如果觉得我的方案不妥当,非常欢迎提出意见或建议。

Update @ 2021-12-30:

又对 abReport.py 做了调整 (abReport2.py),现在可以输出一个 ECharts 图表了(尽整些花里胡哨的东西)。

doge

#104 时区

2016-01-01

时间是客观存在的,但我们对时间的认识却是主观的。
我们的计时方法深受我们的语言和文化的影响。

#103 Python 文件压缩方式汇总

2015-12-31
  • zlib — Compression compatible with gzip
  • gzip — Support for gzip files
  • bz2 — Support for bzip2 compression
  • lzma — Compression using the LZMA algorithm
  • zipfile — Work with ZIP archives
  • tarfile — Read and write tar archive files

#100 一则耐克广告

2015-11-30

这其实只是耐克嵌入影片的一段软广告,不过广告文案写得确实很赞,甩开国内那些硬插式广告几万光年了吧!

#99 为 CentOS 升级 Linux 内核

2015-11-19

查看内核版本

  • cat /proc/version
  • uname -a-r 参数可以只查看内核版本号

查看发行版版本

  • lsb_release -a
  • cat /etc/redhat-release(CentOS)

升级

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -ivh https://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-lt -y  # long-term 长期支持版本
# yum --enablerepo=elrepo-kernel install kernel-ml -y  # mainline 主线版本

参考

#98 转载:jQuery 插件开发全解析

2015-11-09

jQuery 插件的开发包括两种:
一种是类级别的插件开发,即给 jQuery 添加新的全局函数,相当于给 jQuery 类本身添加方法(jQuery 的全局函数就是属于 jQuery 命名空间的函数)。
另一种是对象级别的插件开发,即给 jQuery 对象添加方法。下面就两种函数的开发做详细的说明。

#97 冰与火之歌

2015-10-14

这部剧,原先也是看过的。里面的人物关系实在复杂,看了第一季,就放弃了。
这种大剧,若是不弄清楚人物关系、背景、势力,甚至地图,很多情节就看不出味道来,就像是牛嚼牡丹了。
为了继续看下去,我特意花了点时间来了解这些。