http_load壓測伺服器
1.下載http_load ,下載地址:http://acme.com/software/http_load/http_load-12mar2006.tar.gz
[root@localhost ~]#cd /usr/local [root@localhost local]#mkdir http_load [root@localhost local]#chmod 777 http_load [root@localhost local]#cd http_load [root@localhost http_load]# wget http://acme.com/software/http_load/http_load-12mar2006.tar.gz
2.解壓安裝http_load
#tar -zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make && make install
這裡tar解壓包的時候出現錯誤 gzip: stdin: not in gzip format,
原因是這個壓縮包沒有用gzip格式壓縮,所以不用加z引數,囧(所以不是所有的解壓包都得用 -zxvf)!
改成使用tar -xvf http_load-12mar2006.tar.gz
3.使用http_load
基本用法:http_load -p 併發訪問程序數 -s 訪問時間 需要訪問的URL檔案
引數簡單說明一下
-parallel 簡寫-p :含義是併發的使用者程序數。
-fetches 簡寫-f :含義是總計的訪問次數
-rate 簡寫-p :含義是每秒的訪問頻率
-seconds 簡寫-s :含義是總計的訪問時間
新建url.txt檔案,每個url一行
http://www.baidu.com/ http://www.baidu.com/blog/ http://www.baidu.com/signin/ http://www.baidu.com/signup/ http://www.baidu.com/article/123.html http://www.baidu.com/article/1233.html
示例:http_load -p 100 -s 60 url.txt
#100個併發執行60秒
測試結果:852 fetches, 100 max parallel, 1.45158e+07 bytes, in 60 seconds
說明在上面的測試中運行了852個請求,最大的併發程序數是100,總計傳輸的資料是1.45158e+07bytes,執行的時間是60秒
17037.3 mean bytes/connection
說明每一連線平均傳輸的資料量1.45158e+07 / 852 =17037.3
14.2 fetches/sec, 241930 bytes/sec
說明每秒的響應請求為14.2 ,每秒傳遞的資料為241930 bytes/sec
msecs/connect: 0.165399 mean, 15.884 max, 0.031 min
說明每連線的平均響應時間是0.165399 msecs,最大的響應時間15.884 msecs,最小的響應時間0.031 msecs
msecs/first-response: 6634.48 mean, 7501.29 max, 462.391 min
83 bad byte counts
HTTP response codes:
code 200 -- 852
常見錯誤:
1.
(1)byte count wrong
http_load在處理時會去關注每次訪問同一個URL返回結果(即位元組數)是否一致,若不一致就會丟擲byte count wrong ,所以動態頁面可以忽略這個錯誤資訊。
(2)too many open files
系統限制的open files太小,ulimit -n 修改open files值即可
(3)無法傳送大請求 (請求長度>600個字元)
預設接受請求的buf大小 http_load.c
(4)Cannot assign requested address
客戶端頻繁的連伺服器,由於每次連線都在很短的時間內結束,導致很多的TIME_WAIT,以至於用光了可用的埠號,所以新的連線沒辦法繫結埠,所以要改客戶端機器的配置,
在sysctl.conf里加:
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連線,預設為0,表示關閉;
net.ipv4.tcp_timestamps=1 開啟對於TCP時間戳的支援,若該項設定為0,則下面一項設定不起作用
net.ipv4.tcp_tw_recycle=1 表示開啟TCP連線中TIME-WAIT sockets的