1、apr_socket_recv: Connection reset by peer (54)
1 2 3 4 5 6 7 8 | Mac : ~ air $ ab - n 10000 - c 2000 http : / / 127.0.0.1 : 80 / This is ApacheBench , Version 2.3 & lt ; $Revision : 655654 $ & gt ; 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替换到原来的路径 1 2 3 4 5 6 | $ . / 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数值过小导致的。
查看当前系统的默认文件打开数:
1 2 3 4 5 6 7 8 9 10 11 12 | $ 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,解决办法将此数值调大即可。
先查看以下两个数值: 1 2 3 4 | $ sysctl kern .maxfiles kern .maxfiles : 50000 $ sysctl kern .maxfilesperproc kern .maxfilesperproc : 50000 |
要修改成的数值不能大于以上两个数值,如果直接执行ulimit -n 65535
则会报以下错误:
1 | - bash : ulimit : open files : cannot modify limit : Operation not permitted |
所以执行以下命令:
1 | ulimit - n 49999 |
或者直接调大上述两个配置的数值:
1 2 | $ sudo sysctl - w kern .maxfiles = 1048600 $ sudo sysctl - w kern .maxfilesperproc = 1048576 |
继续ab测试:
1 | ab - n 10000 - c 2000 http : / / 127.0.0.1 : 80 / |
现在应该一切OK了