起因:進行壓力測試時,出現一下問題
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)
待解決
