命令格式ab [options] 網站網址
html
參數說明-n、-c、-t、-v
web
示例apache
/usr/local/httpd/bin/ab -n5000 -c900 www.bt.com/index.html
在測試時要根據狀況調整求總數與併發用戶數安全
參數 | 描述 |
---|---|
Server Software |
http 響應數據的頭信息 |
Server Hostname |
請求的url 中的主機名稱 |
Server Port |
web 服務器軟件的監聽端口 |
Document Path |
請求的url 根的絕對路徑 |
Document Length |
http 響應數據的正文長度 |
Concurrency Level |
併發的用戶數 |
Time taken for tests |
全部這些請求被處理完成所花費的時間總和 |
Complete requests |
表示總請求數 |
Failed requests |
失敗的請求總數 |
Total transferred |
請求的響應數據長度總和 |
Requests per second |
服務器的吞吐率,每秒處理的請求數 |
Time per request |
用戶平均請求等待時間 |
Time per request |
每一個請求實際運行時間的平均值 |
Percentage of the requests served within a certain time (ms) |
描述每 個請求處理時間的分佈狀況 |
[root@localhost bin]# ab -n 20000 -c 500 www.kgc.com/index.html //使用命令測試 This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.kgc.com (be patient) Completed 2000 requests Completed 4000 requests Completed 6000 requests Completed 8000 requests Completed 10000 requests Completed 12000 requests Completed 14000 requests Completed 16000 requests Completed 18000 requests Completed 20000 requests Finished 20000 requests Server Software: Apache Server Hostname: www.kgc.com Server Port: 80 Document Path: /index.html Document Length: 68 bytes Concurrency Level: 500 Time taken for tests: 1.237 seconds Complete requests: 20000 Failed requests: 0 Total transferred: 7300000 bytes HTML transferred: 1360000 bytes Requests per second: 16169.67 [#/sec] (mean) Time per request: 30.922 [ms] (mean) Time per request: 0.062 [ms] (mean, across all concurrent requests) Transfer rate: 5763.60 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 5 60.3 1 1004 Processing: 0 14 49.6 6 808 Waiting: 0 12 49.5 5 808 Total: 1 19 78.2 8 1201 Percentage of the requests served within a certain time (ms) 50% 8 66% 9 75% 9 80% 10 90% 13 95% 17 98% 211 99% 406 100% 1201 (longest request)
Apache
工做模式Apache
工做模式介紹Apache
做爲現今web服務器用的最普遍也是最穩定的開源服務器軟件httpd-mpm.conf
文件,該文件位於extra/conf
目錄中event
模式、worker
模式prefork
模式[root@apache1 bin]# ./httpd -l //查看apache當前工做模式 Compiled in modules: core.c mod SO.c http_ core.c event.c
event
做模式介紹event
是Apache
最新的工做模式,它和worker
模式很像,不一樣的是在於它解決了keep-alive
長鏈接的時候佔用線程資源被浪費的問題event
工做模式在遇到某些不兼容的模塊時,會失效,將會回退到worker
模式event
工做模式須要Linux
系統(Linux 2.6+)
對epoll
的支持,才能啓用。須要補充的是HTTPS
的鏈接(SSL
)event
工做方式event
工做模式中,會有一些專門的線程用來管理這些keep-alive
類型的線程event
參數講解在httpd-mpm.conf
配置文件中, 如下是prefork
模塊的定義服務器
< IfModule mpm_event_module> StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0 </lfModule>
參數說明網絡
參數 |
說明 |
---|---|
StartServers |
服務啓動時初始的進程數,默認3 |
MinSpare Threads |
最小的空閒子進程數,默認75 |
MaxSpare Threads |
最大的空閒子進程數,默認250 |
ThreadsPerChild |
每一個子進程產生的線程數量,默認是25 |
MaxRequestWorkers |
限定同一時間內客戶端最大接入的請求數量,默認是400 |
MaxConnectionsPerChild |
每一個子進程在其生命週期內容許最大的請求數量,若是請求總數已經達到這個數值,子進程將會結束,若是設置爲0,子進程將永遠不會結束。將該值設置爲非0值,能夠防止運行PHP致使的內存泄露 |
event
優化建議<IfModule mpm_event_module> ServerLimit 1000 StartServers 20 MinSpareThreads 25 MaxSpareThreads 1200 ThreadsPerChild 50 MaxRequestWorkers 2000 MaxConnectionsPerChild 1000 </IfModule>
prefork
做模式介紹prefork
是一個多路處理模塊(MPM
),實現了一個進程型的、預派生的web
服務器,適合於沒有線程安全庫、須要避免線程兼容性問題的系統MaxClients
設置爲一個足夠大的數值以處理潛在的請求高峯,同時又不能太大,以免所需的內存超出物理內存的大小prefork
工做模式方式spare
)或是空閒的子進程用3 F響應新的請求,可加快響應速度root
身份運行,以便綁定80
端口,子進程一般以一個低特權的用戶運行,可經過配置項的User
和Group
配置prefork
模式,可用httpd -l
查看prefork
參數講解在httpd-mpm.conf
配置文件中,如下是prefork
模塊的定義多線程
< IfModule mpm_prefork_module> StartServers 20 MinSpareServers 10 MaxSpareServers 50 MaxClients 150 MaxRequestsPerChild 0 </lfModule>
參數 | 說明 |
---|---|
ServerLimit |
最大進程數 |
StartServers |
啓動的時候建立的進程數量 |
MinSpareServers |
最少空閒進程 |
MaxSpareServers |
最多空閒進程 |
MaxClients |
最多建立多少個子進程用來處理請求 |
MaxRequestsPerChild |
每一個進程處理的最大請求數,達到請求數,進程即被銷燬,若是設置爲0,子進程永遠不會結束 |
prefork
優化建議<IfModule mpm_prefork_module> ServerLimit 1000 StartServers 10 MinSpareServers 10 MaxSpareServers 30 MaxClients 1000 MaxRequestsPerChild 5000 </IfModule>
worker
工做模式介紹worker
也是多路處理模塊(MPM
),使網絡服務器支持混合的多線程多進程ThreadsPerChild
指令和控制容許創建的總線程數的MaxClients
指令ThreadsPerChild
數量的服務線程和一個監聽線程,監聽線程監聽接入請求並將其傳遞給服務線程處理和應答Apache
老是會維持一個備用(spare
)或是空閒的服務線程池,客戶端無須等待新線程或新進程的創建便可獲得服務root
身份啓動,以綁定80
端口;隨後,Apache
以較低權限的用戶創建子進程和線程User
和Group
指令用於配置Apache
子進程的運行用戶。子進程要對網頁內容擁有讀權限,但應該儘量限制權限worker
參數講解參數 | 說明 |
---|---|
ServerLimit |
最大進程數,默認值是"16" |
ThreadLimit |
每一個子進程的最大線程數,默認值是「64」 |
StartServers |
服務器啓動時創建的子進程數,默認值是"3" |
MaxClients |
容許同時接受的最大接入請求數量(最大線程數量) |
MinSpareThreads |
最小空閒線程數默認值是"75" |
MaxSpareThreads |
設置最大空閒線程數。默認值是"250" |
ThreadsPerChild |
每一個子進程創建的常駐的執行線程數。默認值是25 |
MaxRequestsPerChild |
設置每一個子進程在其生存期內容許伺服的最大請求數量。設置爲"0" ,子進程將永遠不會結束 |
<IfModule mpm_worker_module> ServerLimit 40 ThreadLimit 200 StartServers 20 MaxClients 1000 MinSpareThreads 25 MaxSpareThreads 100 ThreadsPerChild 200 MaxRequestsPerChild 1000 </IfModule>
<Directory目錄路徑>
和</Directory>
這對語句爲主目錄或虛擬目錄設置權限參數 | 做用 |
---|---|
Options |
設置在特定目錄使用哪些特性 |
AllowOverride |
容許存在於.htaccess 文件中的指令類型 |
Require |
設置目錄的訪問控制 |
Indexes |
當用戶訪問該目錄時,但沒有指定要訪問哪一個文件,並且目錄下不存在默認網頁時,返回目錄中的文件和子目錄列表 |
MultiViews |
內容協商的多重視圖,Apache 的一 個智能特性。當訪問目錄中不存在的對象時 |
ExecCGI |
容許在該目錄下執行CGI 腳本 |
FollowSymLinks |
在該目錄下容許文件系統使用符號鏈接 |
Includes |
容許服務器端包含功能 |
IncludesNoExec |
容許服務器端包含功能,但禁止執行CGI 腳本 |
All |
包含除了MultiViews 以外全部特性,若是沒有Options 語句,默認爲All |
Options
應該設爲None
,以防止目錄上內容暴露出去,形成安全隱患AllowOverride
設爲None
,禁. 止使用.htaccess
文件,而將目錄訪問控制放在主配置文件的<Directory>
和</Directory>
之間Require
的控制對象,以控制客戶端的訪問