一直以来都是用JMeter来做压力测试,GUI界面功能虽然强大,报表齐全,但有时候只是想简单测试下,启动JMeter过于繁琐,于是想到用ab来测试,一条命令搞定。MacOS自带了ab,却因版本问题无法正常使用,需要升级到最新版,本文简单记录下过程。
1,先下载httpd、apr、apr-util、pcre,若有已安装的可以忽略
http://httpd.apache.org/download.cgi
http://apr.apache.org/download.cgi
https://ftp.pcre.org/pub/pcre/
2,由于httpd依赖apr、pcre,所以先安装apr、apr-util、pcre
$ cd apr-1.5.2/ $ ./configure $ make $ make test $ sudo make install $ cd apr-util-1.5.4/ $ ./configure --with-apr=../apr-1.5.2/ $ make $ sudo make install $ cd pcre-8.40/ $ ./configure $ make $ sudo make install $ cd ../httpd-2.4.25/ $ make $ sudo make install
3,在恢复模式下替换系统ab,关闭MacOS Rootless,开机按住Cmd+R键,进入恢复模式,打开终端执行:
$ csrutil disable Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect. 重启 $ reboot
4,备份并替换,以下路径是httpd默认安装位置
$ cd /usr/local/apache2/bin/ $ sudo mv /usr/sbin/ab /usr/sbin/ab.bak $ sudo cp ab /usr/sbin/
5,重新进入恢复模式,开启Rootless
$ csrutil enable Successfully enabled System Integrity Protection. Please restart the machine for the changes to take effect. 重启 $ reboot
到此,工具算是准备好了,但MacOS对文件打开有限制,无法满足ab需求,通过以下命令临时调整:(重启后需重新执行)
$ sysctl kern.maxfiles kern.maxfiles: 12288 $ sysctl kern.maxfilesperproc kern.maxfilesperproc: 10240 $ sudo sysctl -w kern.maxfiles=1048600 kern.maxfiles: 12288 -> 1048600 $ sudo sysctl -w kern.maxfilesperproc=1048576 kern.maxfilesperproc: 10240 -> 1048576 $ ulimit -n 256 $ ulimit -n 1048576 $ ulimit -n 1048576
搞定!