mac環境下 ab 壓力測試及問題處理


 

起因:進行壓力測試時,出現一下問題

Benchmarking www.local_test.com (be patient)
socket: Too many open files (24)

$ ab -n 6000 -c 5000 http://www.local_test.com/goods
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.local_test.com (be patient)
socket: Too many open files (24)

 

檢測服務器能夠打開文件的數量

Linux ulimit命令用於控制shell程序的資源。

ulimit為shell內建指令,可用來控制shell執行程序的資源。

語法
ulimit [-aHS][-c <core文件上限>][-d <數據節區大小>][-f <文件大小>][-m <內存大小>][-n <文件數目>][-p <緩沖區大小>][-s <堆疊大小>][-t <CPU時間>][-u <程序數目>][-v <虛擬內存大小>]
參數:

-a  顯示目前資源限制的設定。
-c <core文件上限>  設定core文件的最大值,單位為區塊。
-d <數據節區大小>  程序數據節區的最大值,單位為KB。
-f <文件大小>  shell所能建立的最大文件,單位為區塊。
-H  設定資源的硬性限制,也就是管理員所設下的限制。
-m <內存大小>  指定可使用內存的上限,單位為KB。
-n <文件數目>  指定同一時間最多可開啟的文件數。
-p <緩沖區大小>  指定管道緩沖區的大小,單位512字節。
-s <堆疊大小>  指定堆疊的上限,單位為KB。
-S  設定資源的彈性限制。
-t <CPU時間>  指定CPU使用時間的上限,單位為秒。
-u <程序數目>  用戶最多可開啟的程序數目。
-v <虛擬內存大小>  指定可使用的虛擬內存上限,單位為KB。

查看結果:

$ 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) 1418
virtual memory          (kbytes, -v) unlimited

修改為 10000

$ ulimit -n 10000

測試
$ 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) 10000
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1418
virtual memory          (kbytes, -v) unlimited

再次壓力測試

錯誤問題:

apr_socket_recv: Connection reset by peer (54)

 

是由於使用的MacOSX默認自帶的ab限制了並發數導致的。

解決辦法:下載最新的apache並重新編譯,備份原來的ab並將新編譯的ab替換到原來的路徑。

先下載文件:httpd-2.4.25.tar.bz2,在編譯的時候說沒有apr和apr-util,先對這兩個進行安裝;

官網下載地址:http://apr.apache.org/downloa... 和 http://apache.fayea.com/httpd/

//解壓
tar -zxvf apr-1.5.2.tar.gz //進入解壓后目錄
.
/configure --prefix=/usr/local/apr
make
& make install
//同理 tar
-zxvf apr-util-1.5.4.tar.gz
.
/configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
& make install //同理
tar
-zxvf httpd-2.4.25.tar.bz2
.
/configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util make & make install

 

錯誤問題:

apr_socket_connect(): Operation already in progress (37)

 待解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM