1、apr_socket_recv: Connection reset by peer (54)
Mac:~ air$ ab -n 10000 -c 2000 http://127.0.0.1:80/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
apr_socket_recv: Connection reset by peer (54)
Mac:~ air$
这个报错一般是由于使用的MacOSX默认自带的ab限制了并发数导致的。
解决办法:
下载最新的apache并重新编译,备份原来的ab并将新编译的ab替换到原来的路径
$ ./configure --prefix=/usr/local/webserver/httpd-2.4.10
$ make
$ make install
$ cd /usr/local/webserver/httpd-2.4.10
$ sudo mv /usr/sbin/ab /usr/sbin/ab.bak
$ sudo cp bin/ab /usr/sbin/ab
2、socket: Too many open files (24)
一般这种报错是由于MacOSX默认的open files数值过小导致的。 查看当前系统的默认文件打开数:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
可以看到默认的open files数值为256,解决办法将此数值调大即可。 先查看以下两个数值:
$ sysctl kern.maxfiles
kern.maxfiles: 50000
$ sysctl kern.maxfilesperproc
kern.maxfilesperproc: 50000
要修改成的数值不能大于以上两个数值,如果直接执行ulimit -n 65535则会报以下错误:
-bash: ulimit: open files: cannot modify limit: Operation not permitted
所以执行以下命令:
ulimit -n 49999
或者直接调大上述两个配置的数值:
$ sudo sysctl -w kern.maxfiles=1048600
$ sudo sysctl -w kern.maxfilesperproc=1048576
继续ab测试:
ab -n 10000 -c 2000 http://127.0.0.1:80/
现在应该一切OK了